JQuery Ajax阅读JSON的麻烦

时间:2011-07-10 00:30:14

标签: jquery ajax

我正在使用JQuery尝试读取JSON,并且我一直在错误处理程序中结束。当我检查DOM时,我看到statusText下的“错误”没有更多细节。我已经尝试将其保存到本地文件并添加了beforeSend部分,以根据另一篇文章解决潜在的MIME问题。当我在浏览器中打开url时,它会生成有效的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);}

});

1 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。问题出现了,因为您正在尝试执行跨域AJAX请求。但是,并非所有内容都丢失,因为Google提供了Google Maps Javascript API V3 Services - 客户端地理编码API。

以下完整代码示例(已测试且正在运行)将允许您访问所需的JSON对象。在此示例中,警告框将显示“Williamsburg,NY,USA” - 第一个formatted_address。

<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>