繁体   English   中英

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

[英]JQuery Post sends form data and not 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发送?

使用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

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

data字段修改为:

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

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

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

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

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

只是分享,看看这是否适合你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM