2011-07-10 56 views
1

我正在使用JQuery尝试阅读JSON,并且一直持续到错误处理程序。当我检查DOM时,我所看到的只是statusText下的“错误”,没有更多细节。我试过把它保存到本地文件中,并添加了beforeSend部分来解决基于另一篇文章的潜在MIME问题。当我在浏览器中打开url时,它会生成有效的JSON。JQuery Ajax阅读JSON的问题

$.ajax({ 
type : "GET", 
url : "http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true", 
beforeSend : function(x) { 
    if (x && x.overrideMimeType) {x.overrideMimeType("application/j-son;charset=UTF-8");}}, 
dataType : "application/json", 
success : function(data) { 
    alert("success" + data)}, 
error : function(y) {alert("failure" + y.statusText);} 

});

+0

您是否尝试覆盖缓存? –

+3

九(9)题;没有[接受的答案](http://meta.stackexchange.com/q/5234/148310)! –

回答

3

你的代码没有问题。由于您尝试执行跨域AJAX请求,因此问题正在发生。然而,并非所有的东西都会丢失,因为Google提供了他们的Google Maps Javascript API V3 Services-客户端地理编码API。

下面的完整代码示例(测试和工作)将使您可以访问所需的JSON对象。在这个例子中,一个警告框将显示“美国纽约州威廉斯堡” - 第一个格式化地址。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var geocoder = new google.maps.Geocoder(); 
    var input = "40.714224,-73.961452"; 
    var latlngStr = input.split(",", 2); 
    var lat = parseFloat(latlngStr[0]); 
    var lng = parseFloat(latlngStr[1]); 
    var latlng = new google.maps.LatLng(lat, lng); 
    geocoder.geocode({ 'latLng': latlng }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (results[1]) { 
       alert(results[1].formatted_address); 
      } 
     } else { 
      alert("Geocoder failed due to: " + status); 
     } 
    }); 
}); 
</script> 
+0

@ user743183:这是你的第9个问题,你还没有接受一个答案。很多人对你的问题做出贡献,你应该花点时间接受那些帮助你的答案。并非每一个答案都是你正在寻找的,但是,对于这个问题,你正在得到你所需要的。现在是时候让你回到StackOverflow社区,否则人们不会在将来帮助你。我强烈建议您进一步了解如何回答问题并标记问题。转到此链接阅读更多:http://meta.stackexchange.com/q/5234/148310 –