当我删除内容类型它工作,但在php端收到的jsonitem有我在其他帖子中发现的语法错误,我应该在发送Json对象时确切地确定内容类型。
此代码返回"失败的功能"
var json = {
test: "testv"
};
var data = {
action: 'ajax_load_article',
jsonitem: JSON.stringify(json),
};
var options = {
url: beloadmore.url,
dataType: "json",
contentType: "application/json;charset=utf-8",
type: "POST",
data: data,
success: function(res, status, xhr) {
if (res.success) {
console.log(res);
$('.site').append(res.data);
} else {
console.log("failed func");
console.log(res);
}
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
console.log(error);
}
};
$.ajax(options);
编辑:
php文件:
$jsonitem= $_POST['jsonitem'];
$jsonitemdecoded = json_decode($jsonitem);
echo "jsonitem".$jsonitem;
echo "jsonitemencoded".$jsonitemdecoded;
echo json_last_error_msg();
当我删除contentType时,回显屏幕:' application / json' :
jsonitem {\" test \":\" testv \"}
jsonitemencoded语法错误
答案 0 :(得分:1)
如果您使用application/json
作为请求的内容类型,则应在发布之前将对象序列化为json;
JSON.stringify(data);