我目前正在使用 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 工作正常。两台服务器上使用完全相同的代码。
有人知道是什么原因造成的吗?会不会是编码问题?需要注意的一件事是,在一台服务器上,我必须通过所见即所得编辑器输入 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));
}
最佳答案
我找到了问题的解决方案!
header 中旧版本的 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
关于jquery - JSON.stringify() - 转义问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774626/