首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从onreadystatechange返回变量

从onreadystatechange返回变量
EN

Stack Overflow用户
提问于 2010-08-22 08:53:40
回答 2查看 3.1K关注 0票数 1

我试图从onreadystatechange返回一个变量,但似乎在作用域方面遇到了问题。即使我设置了一个全局变量,当我试图在事后检索我的变量时,它也是未定义的。我不太确定我做错了什么。在过去的三年里,我没有做过太多的Javascript工作。

代码语言: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);

任何帮助或建议都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-22 09:01:15

你必须使用一个回调函数来处理数据。请记住,AJAX代表异步(JAX)。因此,如果在您的onreadystatechange处理之后,该值仍然不可用,则是因为此时请求没有完成。

代码语言:javascript
复制
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选项卡中的请求查看是否发生了错误

票数 0
EN

Stack Overflow用户

发布于 2010-08-22 09:44:30

使用一个对象返回多个项是唯一的方法吗?像这样吗?

代码语言:javascript
复制
 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3539654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档