Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带承诺的XMLHttpRequest返回空响应_Javascript_Ajax_Es6 Promise - Fatal编程技术网

Javascript 带承诺的XMLHttpRequest返回空响应

Javascript 带承诺的XMLHttpRequest返回空响应,javascript,ajax,es6-promise,Javascript,Ajax,Es6 Promise,我试图在不使用jquery的情况下调用ajax请求。通过使用ECMA脚本6: var promise1 = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); var url = urls.urlListChapters.replace(0, specificationId); xhr.open('GET', url, true); xhr.

我试图在不使用jquery的情况下调用ajax请求。通过使用ECMA脚本6:

var promise1 = new Promise(function(resolve, reject) {
        var xhr = new XMLHttpRequest();
        var url = urls.urlListChapters.replace(0, specificationId);
        xhr.open('GET', url, true);
        xhr.responseType = 'json';
        xhr.onload = function() {
            if (xhr.status === 200) {
                alert(xhr.response);
                resolve(xhr.response);
            } else {
                reject(new Error(xhr.statusText));
            }
        };
        xhr.onerror = function() {
            reject(new Error("Network error"));
        };
        xhr.send();
    });
    promise1.then(function(data) {
        alert('Your public IP address is: ' + data);
    }, function(status) {
        alert('Something went wrong.');
    });
我得到的回答是“null”。然而,使用我的oljquery方法,我确实得到了对象列表

$.ajax({
        url: urls.urlListChapters.replace(0, specificationId),
        dataType: 'json',
        method: 'GET',
    })
    .done(function(data) {
        var data = JSON.parse(data);
        console.log(data);
        alert(1)
    })
    .fail(function(jqXHR, textStatus, errorThrown){
        console.log(jqXHR);
        alert('WHAT!');
    });

有什么我遗漏的吗?

检查浏览器开发人员工具网络选项卡,查看请求的发送/接收内容
xhr。如果设置
responseType='json'
,则响应将是一个对象,Internet Exploder不支持该响应类型-因此在这种情况下,
response
将是一个字符串-您最好(如果您需要支持IE)不设置响应类型,然后执行
resolve(JSON.parse(xhr.response))
将jQuery代码移植到此解决方案时遇到了相同的问题:您应该改用fetchAPI和polyfill。没有理由手动承诺XHR。