我正在尝试存储来自Google Geocoding API的响应的纬度和经度值。现在我在加利福尼亚使用固定的位置。我的HTTP请求一直返回undefined。
我一直在四处寻找,我发现人们也遇到同样的问题,但我无法绕过制作一个似乎是解决方案的回调功能,任何人都可以向我解释如何做到这一点?我知道我的CORS请求正在运行,因为我正在使用它从我设置的Heroku服务器谈GET。
var geocode = new XMLHttpRequest();
geocode = createCORSRequest('GET', 'https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=');
geocode.onload = function() {
var geoData = JSON.parse(geocode.responseText); // parse the JSON from geocode response
var results = geoData["results"]; // create variable for results
var userLong = results["geometry"]["location"]["lng"]; // parse the latitude
var userLat = results["geometry"]["location"]["lat"]; // parse the longitude
console.log(userLong);
console.log(userLat);
}
createCORSRequest()
// Create the XHR object.
function createCORSRequest(method, url) {
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, false);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
答案 0 :(得分:0)
假设createCORSRequest
返回一个xhr
或xhr
之类的对象(这似乎是来自HTML5 Rocks网站等地方的createCORSRequest的典型样板),您需要包含{{} 1}}在代码的末尾。否则,请求永远不会触发,因此永远不会调用geocode.send();
处理程序。
答案 1 :(得分:0)
看起来您正在关注HTML5Rocks
网站 Using CORS 文章。
创建xhr
请求后。您必须调用send()
方法来触发ajax调用。
var geocode = new XMLHttpRequest();
geocode = createCORSRequest('GET', 'https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=');
geocode.onload = function() {
var geoData = JSON.parse(geocode.responseText); // parse the JSON from geocode response
var results = geoData["results"]; // create variable for results
var userLong = results["geometry"]["location"]["lng"]; // parse the latitude
var userLat = results["geometry"]["location"]["lat"]; // parse the longitude
console.log(userLong);
console.log(userLat);
}
geocode.send();
除非您致电geocode.send()
,否则该值将未定义,因为未触发任何请求。