javascript - 同步跨域AJAX请求

标签 javascript jquery ajax json cross-domain

假设目录结构如下:

/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 requestAccess 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/

相关文章:

jquery - 在加载主页时运行 ajax

javascript - Jquery 数学与 .return

javascript - 附加到数据选择器的值,然后从中删除

javascript - 使用 jQuery 为单选按钮表单创建解释框

jquery - 在 JMeter 测试期间有捕获 AJAX 流量的好方法吗?

javascript - 如何将 html 作为字符串传递到另一个函数中循环?

javascript - 拖动时摆脱半透明圆形CSS div中的背景颜色

javascript - 一次交换两个 Div,然后将它们交换为不同的两个 Div,并保持循环一定的秒数

javascript - JavaScript 中数组列表的 Excel 公式

javascript - 气泡图 : how to avoid bubbles being cut off? 谷歌可视化