在纯javascript中从本地文件到服务器获取数据ajax

时间:2016-11-28 01:31:52

标签: javascript json ajax

我想从文件本地到服务器获取数据ajax。 我在Js写作如下:

var UrlDetails = 'http://192.xxx.x.xxx:7000';
function createCORSRequest(method, url, asynch) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        // XHR for Chrome/Firefox/Opera/Safari.
        xhr.open(method, url, true);
        xhr.setRequestHeader('MEDIBOX', 'login');
        xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    } else if (typeof XDomainRequest != "undefined") {
        // XDomainRequest for IE.
        xhr = new XDomainRequest();
        xhr.open(method, url, asynch);
    } else {
        // CORS not supported.
        xhr = null;
    }
    return xhr;
}

function getDoLogin(e, callback) {
    var url = UrlDetails + '/api/loginGET?username=' + e.id + '&password=' + e.password + '&f=json';
    var xhr = createCORSRequest('GET', url, true);
    if (xhr) {
        xhr.onreadystatechange = function () {
            try {
                if (xhr.readyState === XMLHttpRequest.DONE) {
                    if (xhr.status === 200) {
                        callback(JSON.parse(xhr.responseText));
                    } else {
                        xhr.status === 403 ? modalShow() : errorServer(xhr.status);
                    }
                }
            }
            catch (e) {
                alert('Caught Exception: ' + e.description);
            }
        };
        xhr.send();
    }
}

我调用了函数getDoLogin(e, f);我从Chrome收到错误:XMLHttpRequest无法加载http://192.xxx.x.xxx:7000/api/loginGET?username=1&password=1&f=json。预检的响应具有无效的HTTP状态代码405

它只与Jquery一起运行:

function getDoLoginJQuery(e) {
    return $.Deferred(function (d) {
        $.ajax({
            type: 'get',
            url: UrlDetails +'/loginGET?username=' + e.id + '&password=' + e.password + '&f=json',
            cache: 'false',
            dataType: 'json'
        }).done(function (a, b) {
            d.resolve(a)
        }).fail(function (a, b, c) {
            d.reject(a, b, c);
        })
    })
}

我不知道如何用JS编写来完全运行。 (对不起。我的英语不好。)

1 个答案:

答案 0 :(得分:0)

尝试删除setRequestHeader,如下所示:

function createCORSRequest(method, url, asynch) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        // XHR for Chrome/Firefox/Opera/Safari.
        xhr.open(method, url, true);
        // xhr.setRequestHeader('MEDIBOX', 'login');
        // xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    } else if (typeof XDomainRequest != "undefined") {
        // XDomainRequest for IE.
        xhr = new XDomainRequest();
        xhr.open(method, url, asynch);
    } else {
        // CORS not supported.
        xhr = null;
    }
    return xhr;
}
祝你好运。