我现在正在使用phonegap android应用程序,我需要用户的当前地址,所以我用过这个 JSON api。
这是我从JSON api获取位置更新数据的代码
$.ajax('http://maps.googleapis.com/maps/api/geocode/json?latlng=26.9008773,75.7403539&sensor=true', {
dataType: 'jsonp',
timeout: 3000,
data: {
_method: 'GET'
},
success: function (data,status) {
if (data._status != 200) {
console.log('received error', data._status);
// handle error
}else{
console.log('received data', data);
// do something useful with the data
}
},
error: function(data,status) {
var myObject = JSON.stringify(data);
console.log("Data Returned is " + myObject);
console.log("Status is " + status);
alert('error');
},
complete: function(data, status) {
alert('complete');
}
});
每次进入错误部分,然后完整部分,永远不会进入成功部分。 控制台输出是:
12-10 11:11:34.393: I/Web Console(10620): Data Returned is {"readyState":4,"status":404,"statusText":"error"} at file:///android_asset/www/index.html:263
12-10 11:11:34.393: I/Web Console(10620): Status is error at file:///android_asset/www/index.html:264
有谁能告诉我,究竟问题在哪里?
答案 0 :(得分:0)
如果我没记错,PhoneGap中的默认安全策略是阻止所有网络访问。您需要将http://maps.googleapis.com
列入白名单。
答案 1 :(得分:0)
ajax_call ='http://maps.googleapis.com/maps/api/geocode/json?latlng=26.9008773,75.7403539&sensor=true';
$.ajax({
type: "GET",
url: ajax_call,
cache:false,
dataType: "json",
success: function(response){
$.each(response.results, function(key, value) {
//alert(value.formatted_address);
console.log(value.formatted_address);
});
}
}).done(function() {
})
答案 2 :(得分:0)
您请求的api不支持jsonp,最终请求将是这样的:
http://maps.googleapis.com/maps/api/geocode/json?callback=jQuery18309743240959942341_1386656119920&latlng=26.9008773,75.7403539&sensor=true&_method=GET&_=1386656120107
使用回调参数,但输出仍然是json,而不是像
这样的javsscript文件jQuery18309743240959942341_1386656119920(jsonDataHere...)
看看这个:https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse,它会像这样请求网址
https://maps.googleapis.com/maps/api/js/GeocodeService.Search?5m2&1d40.714224&2d-73.96145200000001&7sUS&9sen&callback=_xdc_._4cni6z&token=46423
输出是:
_xdc_._4cni6z && _xdc_._4cni6z( { ....
那是jsonp。