2016-07-16 7 views
-1

APIに接続して地元の農家市場のリストを取得しようとしていますが、引き続き入手してください参照エラーxmlhttpは40行目で定義されていません。彼らは別の位置で動作するかどうかを確認するコードの塊を移動しようとしました。参照エラーが見つかりませんxmlhttp

<html> 

    <head> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <meta charset="UTF-8"> 

     <title>Markets</title> 
     <script> 
      window.onload = function() { 

       function myFunction(arr) { 
        out = "<h1>Markets</h1>"; 
        var i; 
        for (i = 0; i < array.results.length; i++) { 
         out = out + "<em>" + item.marketname + "</em><br>" + details.marketdetails.Address + "</p>" 
         arr.results.forEach(printDetails) 

        } 
        document.getElementById("market_details").innerHTML = out; 
       } 

       var mybutton = document.getElementById("submit_btn") 
       mybutton.onclick = function() { 

        var xmlhttp = new XMLHttpRequest(); 
        var zip = document.getElementById("zip").value 
        var url = "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=" + zip; 

        xmlhttp.onreadystatechange = function() { 
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
          var myArr = JSON.parse(xmlhttp.responseText); 
          myFunction(myArr); 
         } 
        } 
       }; 

       xmlhttp.open("GET", url, true); 
       xmlhttp.send(); 
      } 

      itemsProcessed = 0 

      function printDetails(item, index, array) { 

       console.log(item.marketname) 

       var xmlhttp = new XMLHttpRequest(); 
       var url2 = "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/mktDetail?id=" + id; 

       xmlhttp.onreadystatechange = function() { 
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
         var myDArr = JSON.parse(xmlhttp.responseText); 
         details = myDArr 

         //console.log(myDArr.marketdetails) 

        }; 
        xmlhttp.open("GET", url2, true); 
        xmlhttp.send(); 

        itemsProcessed++ 
       } 
      } 

     </script> 
    </head> 

    <body> 
     <h1> Find Your Local Market!<h1> 
    Enter Zip Code:<input id="zip"></p><br> 
    <button id = "submit_btn">Submit</button> 
    <div id="market_details"></div> 
    </body> 
+0

問題がどのラインで分かっているかを特定してください。 「40行目」と言うと、おそらく誰も40行目にカウントする時間はかかりません。 –

答えて

1

最初の問題は、あなたがonclickハンドラ内xmlhttpを定義し、ハンドラの外にそれを使用することです:

mybutton.onclick = function() { 
    var xmlhttp = new XMLHttpRequest(); //<-- This must be used from inside the current function 
    //Your code here 
    xmlhttp.open("GET", url, true); //<-- put this inside the function 
    xmlhttp.send(); //<-- put this inside the function 
} 

第二の問題は、あなたopensendonreadystatechangeハンドラ内XMLHttpRequestということです:

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     var myDArr = JSON.parse(xmlhttp.responseText); 
     details = myDArr 

     //console.log(myDArr.marketdetails) 

    }; 

    itemsProcessed++ 
} 
xmlhttp.open("GET", url2, true);//<-- put this outside the onreadystatechange handler 
xmlhttp.send();//<-- put this outside the onreadystatechange handler 

私はこれがあなたを助けることを望みます。

+0

ありがとうございます。私はあなたが提案したものを移動し、エラーメッセージが表示されなくなりました。 – Jane123

関連する問題