2017-11-01 7 views
0

私は次のコードを持っています。 Firefoxでは問題なく動作しているようですが、Chromeでuncaught typeエラーが発生します。私は何が欠けていますか?nullのプロパティ 'getElementsByTagName'を読み取ることができません。それを理解できません

$(document).ready(function() { 
    $('#btn').click(function() { 
     var request = new XMLHttpRequest(); 
     let url = `https://comicvine.gamespot.com/api/characters/?api_key=[apikey]`; 

     request.onreadystatechange = function() { 
      if (this.readyState === 4 && this.status === 200) { 
       var response = JSON.parse(this.responseText); 
       getElements(response); 
      } 
     } 

     request.open("GET", url, true); 
     request.overrideMimeType('text/xml'); 
     request.send(); 
     alert(request.status); 
     alert(request.statusText); 
     var xml = request.responseXML; 
     var table; 

     var users = xml.getElementsByTagName("character"); 
     for (var i = 0; i < users.length; i++) { 
      var user = users[i]; 
      var names = user.getElementsByTagName("name"); 
      var name= user.getElementsByTagName("real_name"); 
      for (var j = 0; j < names.length; j++) { 
       alert(names[j].childNodes[0].nodeValue); 
      } 
     } 
     document.getElementById("results").innerHTML = table; 
    }); 
}); 

Firefoxでデータを表示できますが、Chromeには何も表示されません。

+0

エラーを返す行を指定してください。 – jeff

+0

あなたのコードは、JSONの結果を非同期的に**、**と** XMLの応答を同期的に期待しているようです...あなたはただ1つのタイプの応答を得ることができ、あなたの場合、text/xmlのMIMEタイプXMLのみになります - 結果は非同期的に利用可能になります –

答えて

0

応答が得られる前に取得しようとしています。私は、呼び出しを完了するためにjQueryのajaxを使用します。

$.ajax({ 
    url: url, 
    type: "GET", 
    headers: { 
     "Accept": "application/xml;" 
    }, 
    success: function(data, textStatus, xhr) { 
     alert(textStatus); 
     var xml = data; 
     var table; 

     var users = xml.getElementsByTagName("character"); 
     for (var i = 0; i < users.length; i++) { 
     var user = users[i]; 

     var names = user.getElementsByTagName("name"); 
     var name = user.getElementsByTagName("real_name") 
     for (var j = 0; j < names.length; j++) { 
      alert(names[j].childNodes[0].nodeValue); 

     } 

     } 
     document.getElementById("results").innerHTML = table; 
    }, 
    error: function(data, textStatus, xhr) { 
     alert("error occured\n" data.message); 
    } 
    }); 
関連する問題