我知道有很多线程都有这个相同的问题,但我觉得我已经读完了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的值。
答案 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"];