Ajax Request返回未定义的结果

时间:2011-07-21 13:21:27

标签: javascript ajax ajax-request

我遇到Ajax请求(基本功能)的问题

这是ajax功能

function ajax(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
 if (window.ActiveXObject){ 
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
   }
  }
 }
 else if (window.XMLHttpRequest)
  return new XMLHttpRequest()
 else
  return false
}

这是另一项功能

 _2xm.load = function (p, type)
    {
      p = p.replace("frame_", "");
      loading(type);
      var req=new ajax();
      var __page =encodeURIComponent(p);
      req.open("GET", "page.php?page="+__page, true);
      req.send(null);
      req.onreadystatechange=function(){
        if (req.readyState==4)
        {
          if (req.status==200 || window.location.href.indexOf("http")==-1)
          {
           loading(2);
           return req.responseText;
          }
          else
          {
            loading(2);
            return "An error was occured.... ";
          }
        }
      }
    }

这是使用_2xm.load()函数的代码的一部分:

_2xm.loadData = [_2xm.load(pg, 0), _2xm.now(), _2xm.interval * 60];

但结果总是Undefined,为什么?

1 个答案:

答案 0 :(得分:0)

您从未从_2xm.load返回值,因此该函数会隐式计算为undefined

只能从绑定到req.onreadystatechange的匿名函数回调中返回值,该函数将在稍后的某个阶段触发,在您对_2xm.load的函数调用结束很久之后异步激活。

也许您应该考虑同步请求。