49

试图发送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 格式发送?

4

3 回答 3

83

JSON.stringify(object)

样本:

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

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

如果你也需要支持这个浏览器,你可以使用这个 Javascript 库:https ://github.com/douglascrockford/JSON-js

于 2012-12-19T16:14:28.797 回答
4

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

将字段修改data为:

...
data: JSON.stringify(object),
...

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

于 2012-12-19T16:13:47.550 回答
-2

我发现使用 JSON 作为这样的字段以默认的“application/x-www-form-urlencoded”格式发送数据更容易:

$.ajax({
    type: 'POST',
    url: '<url>',
    dataType: 'json',
    data: {json:JSON.stringify(object)}
});

在服务器上使用常规方法接收名为json.

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

于 2012-12-19T16:32:27.237 回答