Ajax Request возвращает неопределенный результат - PullRequest
0 голосов
/ 21 июля 2011

У меня проблема с Ajax Request (основная функция)

вот функция 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 голосов
/ 21 июля 2011

Вы никогда не возвращали значение из _2xm.load, поэтому функция неявно оценивается как undefined.

Вы возвращаете значения только из анонимного обратного вызова функции, связанного с req.onreadystatechange, который срабатывает на более поздней стадииасинхронно, еще долго после завершения вызова вашей функции _2xm.load.

Возможно, вам следует рассмотреть синхронный запрос.

...