我的理解是否正确:
// 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'},
});
答案 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