我的理解是否正确:
// 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'},
});
最佳答案
来自the jQuery API documentation :
The data option can contain either a query string of the form key1=value1&key2=value2, or an object of the form {key1: 'value1', key2: 'value2'}. If the latter form is used, the data is converted into a query string using jQuery.param() before it is sent.
如果您传递一个字符串作为 data
属性的值,那么这就是发送到服务器的内容。如果传递对象,对象将转换为参数字符串。
服务器期望参数采用 HTTP 查询字符串的形式:
key1=value1&key2=value2&key3=value3
如果您传递 JSON 字符串,它看起来不会像那样,并且服务器将无法执行正常的参数处理。如果您有可以处理 JSON 的服务器代码,那么这不一定是错误或坏的。
关于Javascript Jquery JSON 发布 - 我的理解正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934918/