我有以下代码,我将一堆JSON数据发布到ASHX文件,我将处理这些数据。不知何故JSON是编码的,我不知道是什么编码它。
$.ajax({
url: '/save_objects_channels.ashx',
data: jsonParams,
contentType: 'application/json',
dataType: 'json',
success: function(data) {
},
error: function (xhr, ajaxOptions, thrownError){
},
complete: function() {
}
});
这是我发布的示例json(我将其生成为字符串):
var jsonParams = '[ { objectID: 333, channelID: 3, supplierId: 2, checked: true },{ objectID: 444, channelID: 4, supplierId: 5, checked: true } ]';
答案 0 :(得分:4)
jQuery对其进行编码。您选择将其作为GET请求(这是.ajax()
的默认设置)发送,该请求将URL中的所有数据作为查询字符串的一部分进行传输。正如Clement Herreman所指出的那样,必须对查询字符串进行编码。
您可能希望切换到type: "POST"
参数中的.ajax()
。
GET请求有一个长度限制,可以在JSON字符串变长时咬你。 POST请求几乎没有大小限制。
另外,您将导致数据泄漏:查询字符串被写入Web服务器日志,当您不小心时,敏感数据可能会在那里结束。 POST请求也会被记录。但是它们的有效负载不会被记录,因为它不是URL的一部分。
答案 1 :(得分:3)
因为必须根据RFC 3986
对网址进行编码提示如何使用Javascript编码网址:Encode URL in JavaScript?