我想执行下列AJAX调用(跨域):跨域AJAX调用来获取JSON响应错误失败,JSON格式正确
$.ajax({
type: 'GET',
url: url + "?callback=?",
contentType: 'application/json',
async: false,
jsonp: "callback",
dataType: 'jsonp',
success: function (json) {
alert("ok" + JSON.stringify(json));
},
error: function (json) {
alert("err" + JSON.stringify(json));
}
});
而且我得到这个警报消息:
这意味着代码以错误方法结束。
如果我在Firefox或Chrome中检查请求,则响应的JSON部分可用且格式明确。 是否有可能在错误方法中获得JSON响应?或者你有什么想法,为什么成功的方法没有命中?
不幸的是,这不是我的服务器,所以我无法在服务器端实现任何更改。我使用http://jsonlint.com/来验证JSON输出,它是有效的。在浏览器中输入相同的URL会正确返回JSON内容。
感谢很多提前, 我尝试了几种不同的方法,但仍然失败上的错误方法,
[编辑]
所以,我用不同的方法打,始终得到同样的错误。如果我将调用的错误部分改成这样:
error: function (jqXHR, textStatus, ex) {
console.log(arguments);
alert(textStatus + "," + ex + "," + jqXHR.responseText);
}
然后我收到以下错误:
http://i.stack.imgur.com/ck6Sd.png
错误的复制粘贴的搜索引擎:
0: Object 1: "parsererror" 2: Error message: "jQuery11020553141210693866_1392367304225 was not called" stack: (...) get stack: function() { [native code] } set stack: function() { [native code] } proto: d callee: function (jqXHR, textStatus, ex) { length: 3 proto: Object
同样的东西适用于上面,响应在浏览器中是可读的,没有问题。
EDIT2
我最后做的JSON调用旧的方式,将其嵌入到页面:
script = document.createElement("script");
script.type = "text/javascript";
script.id = "resultJSON";
script.src = url;
$(".resultsOutput").append(script);
但我有麻烦检索数据,脚本标签似乎是空的。
未捕获的SyntaxError:我的JSON得到一个错误的意外标记:
任何人能帮助我们吗?我开始对这个问题感到绝望。看来问题在于JASON没有使用方法封装来返回。
[最后编辑]
所以,原来的服务器不支持CORS和返回的JSON不裹在一个JS的功能,所以这种做法是行不通的。我将不得不使用其他方法来检索数据..感谢大家阅读
安迪
看起来我倒过来了。服务器不会返回封装到函数中的响应,而是调用函数本身,并且jQuery将在响应到达时调用浏览器内存中的函数。看到这个线程:http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain?rq=1 –
我试过你的第一个建议,删除contentType属性,但代码行为相同。对于你的其他问题,我只是尝试了不同的方法,现在,这是我得到的最远(否则由于我的问题的跨域部分,我得到了各种错误)。我会检查你建议的线索,并让你知道它是否有帮助。非常感谢你的时间,非常感谢。 – user3307231
我检查了提到的链接,但是我找不到任何能帮助我的东西。自从尝试了其他方法后,我看到了更新后的问题。 – user3307231