假设目录结构如下:
/web
example.html
example.js
/example.json
我用浏览器打开 example.html,它运行 example.js,它尝试使用以下调用同步加载 example.json 中的数据:
$.ajax({url: "file:///example.json",
dataType: "json",
async: false,
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
这会导致错误,并显示消息“访问受限 URI 被拒绝”和错误代码 1012。到目前为止,我已经查看了 Access to restricted URI denied“ code: ”1012 - Cross domain Ajax request和 Access to restricted URI denied code: 1012 。第一个链接建议我使用 jQuery 的 getJSON方法,但该方法只能异步工作。第二个链接建议某种 JSONP 回调,但我无法理解它们到底是如何工作的。
请注意,如果我将 example.json 移动到/web/example.json,这个问题很容易消失,但由于我的实际问题的某些情况,我想避免这种情况(我在这里提出的是我的实际情况的简化)问题)。
编辑:我正在尝试此 JSONP 代码,但仍然遇到相同的错误:
$.ajax({url: "file:///example.json",
dataType: "jsonp",
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
最佳答案
默认情况下不允许跨域AJAX请求。您需要使用 CORS 获得其他服务器的许可,或者您可以使用 JSONP。
关于javascript - 同步跨域AJAX请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17861376/