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

时间:2012-12-19 16:11:23

标签: javascript jquery json

尝试发送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发送?

3 个答案:

答案 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的字段。

刚刚分享,看看这对你有效。