Javascript JSON发布到PHP;价值观没有通过

时间:2013-07-22 17:16:12

标签: php javascript ajax parameter-passing json

我知道有很多线程都有这个相同的问题,但我觉得我已经读完了10次,我在这里疯了......

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

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

Ajax Post:

$.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的值。

2 个答案:

答案 0 :(得分:0)

你的ajax方面的电话应该是

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

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

其他解决方法是

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

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

答案 1 :(得分: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"];