XMLHttpRequest.status is "0" for AJAX Request



我正在尝试用Javascript创建一个应用程序,该应用程序从条形码数据库API(http://upcdatabase.org/api)获取数据。当我发出 AJAX 请求时,GET 请求正在通过 API。我可以从 API 的网站上看到我发出了多少请求。

但是,我每次在Firefox,Chrome和Edge上都会收到"0"的XMLHttpRequest.status。我有一种感觉,我错过了一些东西,因为这是我第一次这样做。

这是我正在使用的代码:

var upc = prompt("Enter UPC Code:");
var requestUrl = "https://api.upcdatabase.org/product/" + upc + 
    "/73114EC2F9C47240583DBF3AA190CB4C";
function httpGetAsync(theUrl)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
            alert(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true);  
    xmlHttp.send();
    alert(xmlHttp.status);       
}
httpGetAsync(requestUrl);

感谢任何可以提供帮助的人!

从文档中:

在请求完成之前,status的值将为 0。

请求直到 readyState == 4 才完成,因此如果您在测试成功之前登录status,则查看0是正常的。试试这个:

function httpGetAsync(theUrl)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4) {
            alert(xmlHttp.status);
            if (xmlHttp.status == 200) {
                alert(xmlHttp.responseText);
            }
        }
    };
    xmlHttp.open("GET", theUrl, true);  
    xmlHttp.send();
}

最新更新