Javascript Jquery JSON发布 - 我的理解是否正确?

时间:2016-12-02 14:48:36

标签: javascript php jquery json ajax

我的理解是否正确:

// JavaScript, jQuery
$.ajax({
    url: '/post.php',
    method: 'post',
    data: JSON.stringify({a: 'a', b: 'b'}),
    contentType: 'application/json'
});

$ _ POST将有0个元素

现在,PHP收到一个字符串,而不是一个对象。所以它不能作为键/值迭代它

由于已经构造了JSON,因此无需进行字符串化。

在这种情况下,这应该可以正常工作:

// JavaScript, jQuery
$.ajax({
    url: '/post.php',
    method: 'post',
    data: {a: 'a', b: 'b'},
}); 

2 个答案:

答案 0 :(得分:2)

来自the jQuery API documentation

  

数据选项可以包含形式为key1 = value1& key2 = value2的查询字符串,也可以包含{key1:' value1',key2:' value2&#39>形式的对象;}。如果使用后一种形式,则在发送之前使用jQuery.param()将数据转换为查询字符串。

如果您传递一个字符串作为data属性的值,那么这就是发送到服务器的内容。如果传递对象,对象将转换为参数字符串。

服务器希望参数采用HTTP查询字符串的形式:

key1=value1&key2=value2&key3=value3

如果您通过JSON字符串,它看起来不会那样,服务器无法正常进行参数处理。如果您有可以处理JSON的服务器代码,那么这不一定是错误或错误。

答案 1 :(得分:0)

$.ajax({
    url: '/post.php',
    method: 'post',
    data: {a: 'a', b: 'b'},
    dataType: 'json'
}); 

如果您分析发送到服务器的帖子,您会发现:

a=a&b=b

因此数据转换为查询字符串而无需JSON.stringify