尝试发送json。这是我的功能:
var object = ... ;
$.ajax({
type: 'POST',
url: '<url>',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: object
});
但每当我查看Chrome时,它总是将其作为查询参数发送:
Request Payload:
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)&
如何将其作为JSON发送?
答案 0 :(得分:67)
使用JSON.stringify(object)
样品:
$.ajax({
type: 'POST',
url: '<url>',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(object)
});
注意并非所有浏览器(http://caniuse.com/#feat=json)都支持JSON.stringify,特别是IE7及更低版本的浏览器。
如果您还需要支持此浏览器,则可以使用此Javascript库:https://github.com/douglascrockford/JSON-js
答案 1 :(得分:4)
JSON.stringify(object)
Stringify
将data
字段修改为:
...
data: JSON.stringify(object),
...
你正在这样做,IMO,jQuery将参数视为字典(键值对),并从中构造一个百分位编码的字符串;因此你会看到输出。
答案 2 :(得分:-2)
我发现以默认的'application / x-www-form-urlencoded'格式发送数据更容易,JSON就像这样的字段:
$.ajax({
type: 'POST',
url: '<url>',
dataType: 'json',
data: {json:JSON.stringify(object)}
});
在服务器上使用常规方法接收名为json
的字段。
刚刚分享,看看这对你有效。