2011-06-06 59 views
0

我有下面的代码,我将一堆JSON数据发布到ASHX文件中,我将处理这些数据。不知何故JSON编码,我不知道它编码它。为什么我的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

+0

为什么这是一个问题? – BalusC 2011-06-06 12:31:27

+0

编码的部分,这是造成问题 – Arief 2011-06-06 12:32:28

回答

4

jQuery对它进行编码。您选择将其作为GET请求发送(这是.ajax()的默认值),该请求将URL中的所有数据作为查询字符串的一部分进行传输。由于Clement Herreman也指出,查询字符串必须进行编码。

您可能想要在.ajax()参数中切换到type: "POST"

GET请求有一个长度限制,可以在JSON字符串变长时咬住你。 POST请求几乎没有大小限制。

此外,您将导致数据泄漏:将查询字符串写入Web服务器日志,可能敏感数据可能在您不小心时结束。 POST请求也被记录。但是它们的有效载荷不会被记录,因为它不是URL的一部分。

+0

你确定jQuery做到了吗?它认为他们决定不这样做,以避免双重编码http://bugs.jquery.com/ticket/6834 – 2011-06-06 12:37:02

+0

@Clement:是的,它的确如此,我绝对相信。尝试一下。 – Tomalak 2011-06-06 12:43:01

+0

@Clement:我看过jQuery源代码中的'ajax()',它调用的是[param()'支持函数](http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery /#param)编码数据。 – Tomalak 2011-06-06 13:00:55

相关问题