代码外部不存在变量

时间:2012-02-15 16:26:57

标签: javascript javascript-framework

这是我从XML页面获取数据的XMLHttpRequest代码。当我在“if”中警告变量user_data时,它可以工作。但是在所有这些代码之下,变量不再存在。

感谢您的帮助!

    if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    user_data = xmlhttp.responseText;
    alert (user_data); //THIS WORKS
    }
  }
xmlhttp.open("GET","http://myurl.com/index.php",true);
xmlhttp.send();
alert (user_data); //THIS DOESN'T WORK

3 个答案:

答案 0 :(得分:5)

这是一个异步请求。在请求返回之前执行非工作警报。在请求完成之前,不会分配变量。

答案 1 :(得分:0)

它已超出范围

var user_data = null;
 if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    user_data = xmlhttp.responseText;
    alert (user_data); //THIS WORKS
    }
  }
xmlhttp.open("GET","http://myurl.com/index.php",true);
xmlhttp.send();

再次引用时,不要忘记将其检查为空。

答案 2 :(得分:0)

xmlhttp.send();您的控件会启动您的请求执行,然后在响应此请求后立即移至onreadystatechange=function()阻止。