我正在使用jQuery和jquery-json将数据发布到PHP脚本。
$.post('<?php echo url_for('/ajax.php'); ?>', 'data=' + $.toJSON(order), function (response) {
if (response == "success") {
$("#respond").html('<div class="success">Item Saved!</div>').hide().fadeIn(1000);
setTimeout(function () {
$('#respond').fadeOut(1000);
}, 2000);
}
})
如果我是console.log(订单),我会得到以下的JOSN:
{"details":[{"template_id":"25","font_size":"22"}]}
在我的ajax.php文件中,我有:
$data = json_decode($_POST["data"]);
var_dump($data);exit;
返回'NULL'
但是当我有以下代码时:
$data = $_POST["data"];
var_dump($data);exit;
它返回:
string(61) "{\"details\":[{\"template_id\":\"25\",\"font_size\":\"26\"}]}"
有没有理由逃脱?
解码此问题的最简单方法是什么?
由于
答案 0 :(得分:1)
您可能需要在php.ini或.htaccess文件中禁用magic_quotes_gpc
,该文件会在帖子变量中添加斜杠。
或者你可以像这样在$ _POST ['data']上调用stripslashes
:
$data = json_decode(stripslashes($_POST["data"]));
答案 1 :(得分:0)
您需要将dataType:'json'添加到您的ajax调用中。
$.ajax({
url: url,
type: 'post',
dataType: 'json',
data: $.toJSON(order),
async: true,
success: function (data) {
if (data.response) {
$("#respond").html('<div class="success">Item Saved </div>').hide().fadeIn(1000);
setTimeout(function () {
$('#respond').fadeOut(1000);
}, 2000);
}
}
});