为什么我的json编码?

时间:2011-06-06 12:28:45

标签: json jquery

我有以下代码,我将一堆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 } ]';

enter image description here

2 个答案:

答案 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?