0

我对 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,为什么?

4

1 回答 1

0

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

您仅从绑定到的匿名函数回调返回值,该回调req.onreadystatechange在稍后的某个阶段异步触发,在您的函数调用_2xm.load完成很久之后。

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

于 2011-07-21T13:24:09.513 回答