使用contentType调用Ajax:' application / json'

时间:2018-01-08 15:00:16

标签: javascript php jquery json ajax

当我删除内容类型它工作,但在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语法错误

1 个答案:

答案 0 :(得分:1)

如果您使用application/json作为请求的内容类型,则应在发布之前将对象序列化为json;

JSON.stringify(data);