2013-08-31 69 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