这个问题在这里已有答案:
我试图将一个由html表的 json.stringify
进程获得的Json传递给php文件,以将其插入到数据库中 . 首先,想要检查下面的代码是否正确:在执行'myjson'警报时,我得到了正确的json输出:
var myjson= JSON.stringify(mydata);
alert(myjson);
[{},{"product[]":"john","qty[]":"288","price[]":"199","total[]":"57312"},{"product[]":"sylvia","qty[]":"12","price[]":"13","total[]":"156"},{"product[]":"juan","qty[]":"11","price[]":"9","total[]":"99"},{"total_amount":"57567.00"}]
然后我有这个ajax将它发送到PHP(test.php):
$.ajax({
url: "test.php",
type: "POST",
data: myjson,
dataType: "JSON",
success: function (data) {
alert(data);
}
});
我的php文件检查输出是否正常:
$obj = json_decode($_POST["mydata"]);
echo $obj->var;
但是,一旦php被处理,我的警报中没有任何东西?
怎么了?
1 回答
首先,您需要使用名称发布数据,更具体地说,名称为“mydata” .
目前PHP正在寻找一个名为mydata($ _POST ["mydata"])的帖子,该帖子不可用并抛出以下注意事项
Undefined index: mydata
为此,您可以更改要发送的数据:
至
其次,发送到后端的数据是一个对象数组
您需要通过索引访问它们或遍历数组 .
按索引访问它们:
$obj[0]->var
或$obj[1]->var
最后但并非最不重要的是,属性包含方括号
{"product[]":"john","qty[]":"288","price[]":"199","total[]":"57312"}
,不推荐使用,但仍可使用 . 访问属性应该像:$obj[1]->{'property[]'}
JavaScript的:
PHP:
Update:
AJAX期待JSON响应,否则它将失败 . 在后端,您需要更改对JSON的响应 .