JQuery Post发送表单数据而不是JSON

Jas*_*son 44 javascript jquery json

试图发送json.这是我的功能:

var object = ... ;

$.ajax({
      type: 'POST',
      url: '<url>',
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      data: object
    });
Run Code Online (Sandbox Code Playgroud)

但每当我检查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)&
Run Code Online (Sandbox Code Playgroud)

如何让它作为JSON发送?

Ste*_*fan 73

JSON.stringify(object)

样品:

$.ajax({
    type: 'POST',
    url: '<url>',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    data: JSON.stringify(object)
});
Run Code Online (Sandbox Code Playgroud)

注意并非所有浏览器(http://caniuse.com/#feat=json)都支持JSON.stringify ,特别是IE7及更低版本的浏览器.

如果您还需要支持此浏览器,则可以使用此Javascript库:https://github.com/douglascrockford/JSON-js


Ult*_*nct 5

使用字符串化JSON.stringify(object)

将该data字段修改为:

...
data: JSON.stringify(object),
...
Run Code Online (Sandbox Code Playgroud)

你这样做的方式,IMO,jQuery 将参数视为字典(键值对),并从中构造一个百分位数编码的字符串;因此您会看到该输出。