如何用$.ajax代替查询字符串发送JSON?

如何用$.ajax代替查询字符串发送JSON?

有人能简单地解释一下如何让jQuery发送实际的JSON而不是查询字符串吗?

$.ajax({
    url      : url,
    dataType : 'json', // I was pretty sure this would do the trick
    data     : data,
    type     : 'POST',
    complete : callback // etc});

实际上,这将精心准备的JSON转换为查询字符串。最烦人的是array: []在您的对象中将被转换为array[]: [],可能是由于查询绑定的限制。


桃花长相依
浏览 577回答 3
3回答

缥缈止盈

你需要用JSON.stringify首先将对象序列化为JSON,然后指定contentType所以你的服务器明白这是JSON。这应该能起作用:$.ajax({     url: url,     type: "POST",     data: JSON.stringify(data),     contentType: "application/json",     complete: callback});注意,JSON对象在支持JavaScript1.7/ECMAScript 5或更高版本的浏览器中本机可用。如果需要遗留支持,可以使用json 2.

蝴蝶不菲

不,dataType期权用于解析接收到的数据。要发布JSON,您需要自己通过JSON.stringify并设置processData选择false.$.ajax({     url: url,     type: "POST",     data: JSON.stringify(data),     processData: false,     contentType: "application/json; charset=UTF-8",     complete: callback});注意,并非所有浏览器都支持JSON对象,尽管jQuery有.parseJSON,它没有包含字符串;您将需要另一个多填充库。
打开App,查看更多内容
随时随地看视频慕课网APP