2017-10-19 10 views
-1

バーコードデータベースAPI(http://upcdatabase.org/api)からデータを取得するJavascriptでアプリケーションを作成しようとしています。 AJAXリクエストを作成すると、GETリクエストがAPIに到達します。 APIのウェブサイトから、私が何回もリクエストしたことがわかります。XMLHttpRequest.statusがAJAXリクエストで "0"です

ただし、Firefox、Chrome、およびEdgeでは毎回XMLHttpRequest.statusが「0」になっています。私はこれを初めてやったので、何かが足りないと感じています。ここで

は、私が使用しているコードは次のとおりです。助けることができる誰にでも

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); 

ありがとう! documentationから

+1

コールがまだ返されていないためステータスが0です... – Dekel

+0

詳しい説明はありますか?コードの早い段階でステータスを求めていますか? – Odocoileus

+0

@Odocoileus AJAXは非同期です。あなたは何かが起こる前の状態を求めています。それを 'onreadystatechange'関数に入れます。 – Barmar

答えて

-1

要求が完了する前に、statusの値が0

になり、要求がreadyState == 4まで完了していないので、それは0場合を見て普通ですそのテストが成功する前にstatusと記録します。これを試してみてください:

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(); 
} 
関連する問題