如何在谷歌API中获得价值JSON

时间:2012-11-25 14:59:02

标签: json google-api

我有谷歌API,它返回一个JSON文件

http://maps.googleapis.com/maps/api/geocode/json?latlng=10.75,106.667&sensor=false

我想得到“long_name”:“HồChíMinh”,“long_name”:“ViệtNam”和“short_name”:“VN”

我不懂JSON,我喜欢这个

var API = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=10.75,106.667&sensor=false';
var obj = eval("(" + API + ")");
var obj2 = eval("(" + obj + ")");
document.getElementById("City").innerHTML = obj.results[0].obj2.address_components[0].long_name;

但它不起作用

1 个答案:

答案 0 :(得分:1)

我认为你应该阅读更多关于javascript的内容。您必须使用http get请求来获取json,有两种方法可以使用同步请求或ajax请求。 试试这个:

//the json url
var API = 'http://maps.googleapis.com/maps/api/geocode/json?atlng=10.75,106.667&sensor=false';
//this function add the long_name
function addLongName(data){
    var long_name = data.results[0].address_components[5].long_name;
    document.getElementById("City").appendChild(document.createTextNode(long_name));
}

使用同步请求

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", API, false);
try {
    xmlHttp.send(null);
    responseText = xmlHttp.responseText;
    var data = JSON.parse(responseText);
     addLongName(data);
} catch (ex) {
    console.error(ex);
}

使用ajax请求

var ajax = $.ajax({
    type : "GET",
    url : API,
    dataType: 'jsonp',
    success:  function(data) {
        addLongName(data);
    }
});