变量超出范围

时间:2013-01-13 17:17:35

标签: javascript ajax scope

  

可能重复:
  How to return AJAX response Text?
  How to return the response from an AJAX call from a function?

整天没有解决这个问题。我读到这不可能或不能完成等等。我确实通过所有相关主题,但无法找到解决方案。

所以我认为代码中的变量超出了范围,我无法返回它,无法使用它。

js file:

function getXMLHttp()
{
  var xmlHttp

  try
  {
    //Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    //Internet Explorer
    try
    {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e)
      {
        alert("Your browser does not support AJAX!")
        return false;
      }
    }
  }
return xmlHttp;

}



function MakeRequest()
{
  var xmlHttp = getXMLHttp();

 xmlHttp.onreadystatechange = function(){


   if(xmlHttp.readyState == 4)
    {
      var myvar = new Array();
     myvar=JSON.parse(xmlHttp.responseText);

    return myvar;
    }





} 

   xmlHttp.open("GET", "showimage.php", true);
  xmlHttp.send();



}

所以上面就可以了,它完成时它的PHP脚本的返回值。

我想在html文件中使用myvar变量。试过这样:

 window.onload = function() {
 var myvar = MakeRequest();
 alert (myvar);

} 

失败,返回未定义的值。

尝试将MakeRequest函数作为回调函数,然后从html调用它,如

MakeRequest(function(txt){
});

然后我得到了回应,但可以提醒它。我不想提醒它。我需要它存储在变量myvar中,因为它稍后需要在代码中。

0 个答案:

没有答案