【问题标题】:JSON.stringify() - Escaping IssueJSON.stringify() - 转义问题
【发布时间】:2013-11-15 11:30:00
【问题描述】:

我目前正在使用 AJAX 和 JQuery 将 json 发送到 API 服务器。但是,当我使用 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));
    }

【问题讨论】:

  • 发送到服务器的http请求中的json怎么看?如果您使用的是 chrome,您可以在网络选项卡中看到这一点。
  • 您是否 100% 确定您没有申请 JSON.stringify()两次
  • 什么给了console.log(typeof response)
  • 您只需要将params(这是一个数组...)字符串化,您发送的数据应该是一个对象而不是字符串;那么您发送的响应也应该是 json 而不是字符串
  • @DanielWest 您是否尝试过不像@mikakun 建议的那样序列化data

标签: jquery ajax json mootools stringify


【解决方案1】:

我已经找到解决问题的方法了!

标题中的旧版本 Mootools (v.1.2.4) 似乎导致与 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 2012-06-13
    • 1970-01-01
    • 2021-03-07
    • 2012-04-24
    • 2017-11-07
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多