使用本地文件时进行跨源错误,并在本地进行测试

时间:2018-04-19 06:03:54

标签: jquery ajax

使用ajax访问data.json文件调用接收错误

  

仅支持协议方案的交叉原始请求:http,数据,chrome,chrome-extension,https。

我使用的是本地json文件,而不是服务器数据。

我试过start chrome --allow-file-access-from-files工作正常,但每次我需要运行这些命令

当代码在chrome / jquery中运行时,如何为allow-file-access-from-files为特定文件添加元标记

Ajax电话:

 $.ajax({
        url: 'data.json',
        dataType: 'JSONP',
        jsonpCallback: 'callbackFnc',
        type: 'GET',
        async: false,
        crossDomain: true,
        success: function (data) {
            engines = data;
            myDOM();
         },
        failure: function () { },
        complete: function (data) {
            if (data.readyState == '4' && data.status == '200') {
                console.log(" Status: 'SUCCESS' ");
            }
            else {
                console.log(" Status: 'FAIL' ");                   
            }
        }
    });

data.json:

[
    {
        "Function": "CAB",
        "Part_No": "RE284091",
        "Description": "Cab Air Filter",
        "Hours": "1000",
        "Model": "7200R",
        "Serial_NO":"xxxx"
    },
    {
        "Function": "CAB",
        "Part_No": "RE291412",
        "Description": "RECIRCULATION AIR FILTER",
        "Hours": "1000",
        "Model": "7200R",
        "Serial_NO":"xxxx"
    }

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

$.ajax({
    url: 'http://data.json',
    dataType: 'JSON',
    type: 'GET',
    async: false,
    crossDomain: true,
    success: function () { },
    failure: function () { },
});

如果它不起作用,请尝试使用JSONP,因为它会绕过相同的原始策略

$.ajax({
        url: 'pathtofile',
        dataType: 'JSONP',
        jsonpCallback: 'callbackFnc',
        type: 'GET',
        async: false,
        crossDomain: true,
        success: function () { },
        failure: function () { },
        complete: function (data) {
            if (data.readyState == '4' && data.status == '200') {
                errorLog.push({ IP: Host, Status: 'SUCCESS' })
            }
            else {
                errorLog.push({ IP: Host, Status: 'FAIL' })
            }
        }
    });

答案 1 :(得分:0)

您应该尝试通过网络服务器运行它。出于安全考虑,浏览器本身将无法访问文件。您也不应尝试通过设置一些特定于浏览器的标志来绕过它。

我遇到了类似的问题,并在网络服务器中运行它为我修复了该问题。