0

我知道有很多线程都有同样的问题,但我觉得我已经阅读了 10 次以上,我在这里发疯了......

我正在使用 Javascript/Ajax 向 PHP 页面发布帖子。首先,我使用 key : value 对创建一个对象。然后我对对象进行字符串化。结果是:

{"ID":"150433699","FileNo":"1114"} \\I have tried putting singles quotes on the ends of the string

阿贾克斯邮报:

$.ajax(
{
    type:"POST",
    url:"<mydomain>/valupd.php",
    dataType:"json",
    data:jsonStr //This variable is what I used to output the json listed above.
});

PHP代码:

$json = $_REQUEST["jsonStr"];
$JD = json_decode($json, true);
$id = $JD['ID'];

我没有包括我的 SQL 连接,因为它可以工作。记录插入空白或默认值,除非我进行检查,在这种情况下它不会添加记录。

我还创建了另一个测试 php 页面。然后使用 console.log(jsonStr) 的输出声明一个字符串变量作为它的值。- 这与前面列出的 json 字符串的输出相同。我使用与上面列出的完全相同的 PHP 代码来处理该字符串,并且能够回显 FileNo 的值。

4

2 回答 2

0

您的 ajax 端调用应该是

data: 'jsonStr='+jsonStr
       ^^^^^^^--fieldname
                 ^^^^^^^---value

这将允许$_POST['jsonStr']工作。否则,由于没有字段名称,$_POST[]因此无法填充 - 您必须具有键:值关系,并且您没有提供任何键。

另一种解决方法是

$json = file_get_contents('php://input');

在 PHP 中检索 RAW 发布数据,这将直接读取该 json 字符串。

于 2013-07-22T17:26:24.453 回答
0

首先,当您从 javascript 发布到 php 时,请确保您的数据是 json 对象,不要通过 JSON.stringify 运行它。

$.ajax(
{
    type:"POST",
    url:"<mydomain>/valupd.php",
    dataType:"json",
    data:jsonObj //This should be an object
});

当您执行调用时,json 对象中的属性将成为 $_POST php 超全局中的条目。

所以给定一个看起来像的帖子

 {"ID":"150433699","FileNo":"1114"}

您将能够以

 $id = $_POST["ID"];
 $fileNo = $_POST["FileNo"];
于 2013-07-22T18:07:04.070 回答