我在尝试让跨域 ajax 请求工作时遇到了麻烦,尽管我在 Stack Overflow 上找到了许多解决方案,但我无法让它工作。
$.ajax({
url : 'http://SERVER:PORT/CONTEXT/RESOURCE.html?someParameter=1234',
dataType : 'json',
success: function(xhr) {
alert('ok '+JSON.stringify(xhr));
},
error : function(xhr) {
alert('error '+JSON.stringify(xhr));
}
});
仅使用数据类型“json”进行标准 $.ajax 调用,服务器会以空白响应和 statusText“错误”进行响应,如下所示:
error {"readyState":0,"responseText":"","status":0,"statusText":"error"}
因此,我尝试按照其他线程中的建议将数据类型简单地更改为“jsonp”,但这次它仍然进入错误状态,并出现以下响应:
error {"readyState":4,"status":200,"statusText":"success"}
和“parsererror”的错误消息但没有数据。
是什么赋予了?
我是否需要在服务器端做一些特别的事情,因为它是 Weblogic 中的 Spring MVC?
编辑:jQuery 版本 1.9.1 Spring-3 MVC
EDIT2:哦,是的,我也尝试过 $.getJSON,但是这个命令似乎什么也没做——当我运行将 $.ajax 替换为 $.getJSON 的代码时,什么也没有发生。没有响应,我没有看到控制台中发生任何错误,也没有看到转到 URL 的网络请求。我也确实在第二次尝试中更改了语法,我将其称为 $.getJSON(url, callback); 但这并没有改变任何东西
EDIT3:我还应该提到,当我使用“json”数据类型运行原始代码并查看 Firebug 的响应选项卡时,它是空的。但是当我使用“jsonp”运行第二个代码时,我确实在“响应”选项卡中看到了 JSON 文本。所以很奇怪为什么它仍然会抛出错误。