2016-11-26 6 views
0

テキストを入力するXMLHttpRequestを実行しようとしています。正しい動画を入力すると、タイトルが表示されます。たとえば、「Batman」と入力すると、バットマンと一緒にすべての映画を見ることができます。とにかく私はそれがちょっと重要だとは思わない。JavaScriptでプロパティ '長さ'が未定義です。

"未定義のプロパティ '長さ'を読み取ることができないというエラーが表示されます。これはomdbapiにない映画に入るたびに起こりました。私は結果がnullなら "コードは"このような映画はありませんが、いくつかの奇妙な理由のためにこれをスキップするように言う必要があります "コード"があります。

omdbAPI.addEventListener("load", function() { 
      var result = JSON.parse(this.responseText); 
      if (result === null) { 
       alert("Your search did not find the movie!"); 
      } else { 
       var counter; 
       for (counter = 0; counter < result.Search.length; counter++) { 
        var text = document.createTextNode(result.Search[counter].Title); 
        var newMovie = document.createElement("p"); 
        newMovie.appendChild(text); 
        newMovie.className = "searchResult"; 
        movieList.appendChild(newMovie); 
       } 
      } 
     }); 

それは私for (counter = 0; counter < result.Search.length; counter++)にエラーを与え、それが必要として、それは行く必要があるときには、このような役割を果たし、なぜ私は本当に理解することはできません。誰にも問題が見えますか?それは「警告」セクションから離れて通過して、ちょうど私が右だ場合、私にエラーを与えているそうでにそれを渡すよう

result = var movieList = document.querySelector("#result"); 

だから私が言ったように、それは感じています。私は、問題はここにresult.Search

時にはそのリターンnullであるので、あなたは、確かにあなたがしようとするたびに、このような何かを試すことができると思いif (result.Search == undefined) {

+2

'result'がnullではないかどうかをチェックしますが、' result.Search'が存在するかどうかを確認することは決してありません。 –

+0

'console.log(result.Search)'を試してみてください。 –

+0

オキがそれを試してくれると思っていませんでした。すぐに戻ってきます! – Thrillofit123

答えて

1

を行うことによって、それを修正:

EDITパート2

omdbAPI.addEventListener("load", function() { 
     var result = JSON.parse(this.responseText); 
     if (result.Search === null) { 
      alert("Your search did not find the movie!"); 
     } else { 
      var counter; 
      for (counter = 0; counter < result.Search.length; counter++) { 
       var text = document.createTextNode(result.Search[counter].Title); 
       var newMovie = document.createElement("p"); 
       newMovie.appendChild(text); 
       newMovie.className = "searchResult"; 
       movieList.appendChild(newMovie); 
      } 
     } 
    }); 

かのためにそれをアクセスする前に、あなたがresult.Searchを確認することができます:

有効な値を持つresult.Searchアクセス10
omdbAPI.addEventListener("load", function() { 
     var result = JSON.parse(this.responseText); 
     if (result === null) { 
      alert("Your search did not find the movie!"); 
     } else { 
      var counter; 
      var validSearch = result.Search; 
      if(validSearch != null){ 
      for (counter = 0; counter < validSearch.length; counter++) { 
       var text = document.createTextNode(result.Search[counter].Title); 
       var newMovie = document.createElement("p"); 
       newMovie.appendChild(text); 
       newMovie.className = "searchResult"; 
       movieList.appendChild(newMovie); 
      } 
      } 
     } 
    }); 
関連する問題