我正在尝试从onreadystatechange返回一个变量,并且似乎遇到了范围问题。即使我设置了一个全局变量,当试图在事后检索我的变量时,它是未定义的。不太确定我做错了什么。在过去的3年里,我没有做过太多关于Javascript的工作。
var lat;
var lon;
window.onload = function dosomething(){
var myRequst = new XMLHttpRequest();
var url = "http://www.instamapper.com/api?action=getPositions&key=584014439054448247";
myRequst.open('get', url);
myRequst.onreadystatechange = function(){
if ((myRequst.readyState == 4) && (myRequst.status == 200)){
//alert(myRequst.responseText);
var data = myRequst.responseText;
collected=data.split(","); //parses the data delimited by comma and put data into array
lat = collected[4];
lon = collected[5];
document.write("latitude "+lat+"<BR>\n");
document.write("latitude "+lon+"<BR>\n");
}
}
myRequst.send(null);
}
document.write(lat);
非常感谢任何帮助或建议。
答案 0 :(得分:1)
使用对象返回多个项目的唯一方法是什么?像这样?
myRequest.onreadystatechange = function() {
if(myRequest.readyState == 4 && myRequest.status == 200) {
var obj;
obj.latitude = collected[4];
obj.longitude = collected[5];
getdata(obj);
}
}
function getdata(obj)
{
lat = obj.latitude;
lon = obj.longitude;
document.write(lon);
document.write(lat);
}
答案 1 :(得分:0)
您必须使用将处理数据的回调函数。记住AJAX代表异步(JAX)。因此,如果您的onreadystatechange
处理之后尚未提供该值,则因为该请求未在当时完成。
myRequest.onreadystatechange = function() {
if(myRequest.readyState == 4 && myRequest.status == 200) {
(function(data) {
// do something with the response in the variable data
})(myRequest.responseText);
}
}
编辑:您也可以按照firebug的net / console选项卡中的请求查看错误是否已发生