2013-08-31 117 views
-4

您好我的代碼如下連接,雖然它的更大的代碼使用jQuery循環JSON解析

<html> 
<head> 
<style> 
#results{margin-top:100px; width:600px; border:1px solid #000000; background-color:#CCCCCC; min-height:200px;} 
</style> 


<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
</head> 
<body> 
<div id="results"></div> 

<script> 

var input="Taj Mahal India"; 

var url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + input + "&sensor=false"; 

    var check = $.getJSON(url, function (data) { 
      console.log("inside getjson"); 
      console.log(data); 
      $.each(data.results.address_components, function(i,inside){ 

      if(inside.types[0]=="route"){ 
     $("#results").append('<p> route : '+this.long_name +'</p>'); 
    } 
    if(inside.types[0]=="locality"){ 
     $("#results").append('<p> locality : '+this.long_name +'</p>'); 
    } 

    if(inside.types[0]=="administrative_area_level_2"){ 
     $("#results").append('<p> administrative area 2 : '+this.long_name +'</p>'); 
    } 
    if(inside.types[0]=="administrative_area_level_1"){ 
     $("#results").append('<p> administrative area 1 : '+this.long_name +'</p>'); 
    } 

    if(inside.types[0]=="country"){ 
     $("#results").append('<p> country : '+this.long_name +'</p>'); 
    } 

    }); 
    }); 

    </script> 

    </body> 

    </html> 

問題的一部分是,這是行不通的。我強烈懷疑我在$.each(data.results.address_components, function(i,inside)行中做了什麼錯誤。

JSON用於印度泰姬陵是在這裏http://maps.googleapis.com/maps/api/geocode/json?address=Taj%20Mahal%20India&sensor=false

+1

你能告訴我們你期待它做什麼,它做什麼,你不指望? – Xymostech

+0

@Xymostech當我在瀏覽器中運行它不打印任何東西 它在螢火蟲中引發了一個錯誤,這超出了我的理解,它說e沒有定義。 – user609306

+0

@henry它工作的感謝 – user609306

回答

2

應該

$.each(data.results[0].address_components, function(i,inside) 

,而不是

$.each(data.results.address_components, function(i,inside) 

,因爲你是從第一results集取數據。這裏是一個demo

注:我不知道是否可以有多個results。如果可以,那麼你必須首先遍歷results,然後在address_components之內。

+0

這應該是被接受的答案。 +1 – Moob

+0

非常感謝! ... – user609306

1

要小心了「this」關鍵字的範圍,它需要results[0]作爲@Harry指出。以下是未經測試:

var check = $.getJSON(url, function (data) { 
    console.log("inside getjson"); 
    console.log(data); 
    $.each(data.results[0].address_components, function(i,inside){ 
     if(inside.types[0]=="route"){ 
      $("#results").append('<p> route : '+inside.long_name +'</p>'); 
     } 
     if(inside.types[0]=="locality"){ 
      $("#results").append('<p> locality : '+inside.long_name +'</p>'); 
     } 
     if(inside.types[0]=="administrative_area_level_2"){ 
      $("#results").append('<p> administrative area 2 : '+inside.long_name +'</p>'); 
     } 
     if(inside.types[0]=="administrative_area_level_1"){ 
      $("#results").append('<p> administrative area 1 : '+inside.long_name +'</p>'); 
     } 
     if(inside.types[0]=="country"){ 
      $("#results").append('<p> country : '+inside.long_name +'</p>'); 
     } 
    }); 
}); 

this fiddle通過@Harry

+0

是的,謝謝它的工作 – user609306

+0

@Moob:如果你不介意,你可以添加這個[ **小提琴**](http://jsfiddle.net/hari_shanx/F3TMF/)到你的答案:) – Harry

+1

@哈里:所以補充,但既然你首先發現問題,也許你應該發佈它作爲你自己的答案。 – Moob