我目前正在使用AJAX和JQuery将json发送到一个应用程序接口服务器。但是,当我使用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));
}发布于 2013-11-05 07:04:54
我已经找到了这个问题的解决方案!
似乎头文件中的旧版本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
https://stackoverflow.com/questions/19774626
复制相似问题