JSON.stringify() - 转义问题

时间:2013-11-04 18:33:52

标签: jquery ajax json mootools stringify

我目前正在使用AJAX和JQuery将json发送到API服务器。但是,当我使用JSON.stringify()时,在使用完全相同的代码时,在使用JSON.stringify()时转发JSON字符串的服务器似乎存在问题,而没有任何问题。

以下是我使用stringify的Javascript对象示例:

{"jsonrpc":"2.0","method":"get_contacts","params":["4345ert343t34t34t4e564",
{"campaigns":["AI5D"]}],"id":1} 

我的工作是https://github.com/GetResponse/DevZone/blob/master/API/examples/javascript_synopsis.html

在一台服务器上,双引号被反斜杠转义,导致API服务器响应解析错误,因为这显然是不正确的。在另一台服务器上,转义不存在,API工作正常。两台服务器上都使用了完全相同的代码。

有人知道是什么原因引起的吗?这可能是编码问题吗?需要注意的一点是,在一台服务器上,我必须通过WYSIWYG编辑器输入JavaScript,但JavaScript似乎在页面加载时正确显示。

如果有人有任何想法会很好,因为我花了很长时间试图解决这个问题。

编辑:

这是我正在使用的JS代码:

var api_key = '4345ert343t34t34t4e564';
var api_url = 'http://api2.getresponse.com';            
var CAMPAIGN_ID = 'AI5D';

var data = JSON.stringify({
"jsonrpc"   : "2.0",
"method"    : "get_contacts",
"params"    : [
        api_key,
        {
            "campaigns" : ["AI5D"] 
        }
    ],
"id"        : 1
});

console.log(data);

jQuery.ajax({
    url         : api_url,
    data        : data,
    type        : "POST",
    contentType : "application/json",
    dataType    : "json",
    crossDomain : true,
    async       : true,
    success     : function(response) 
    {                        
        alert(JSON.stringify(response));
        console.log(JSON.stringify(response));
    }

1 个答案:

答案 0 :(得分:3)

我发现了问题的解决方案!

标题(v.1.2.4)中的旧版Mootools似乎与JSON.stringify()发生冲突。删除旧的Mootools库可以解决问题。

显然Mootools v1.2.4尝试覆盖JSON.stringify(),它自己的更改是不正确的,反过来导致反斜杠转义的问题。此问题在http://outsourceror.blogspot.co.uk/2011/04/mootools-intrudes-on-native-json-and.html

中找到

将Mootools更新到最新版本也应修复此http://mootools.net/download