我正在尝试用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();
}