2011-07-21 9 views
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, почему?

+0

Мне нравится, как ваш 'ajax()' тщательно рассматривает случаи ошибок и возвращает 'false', когда объект' XmlHttpRequest' не может быть создан ... а затем ваш '_2xm.load' ** полностью игнорирует это ** , –

ответ

0

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

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

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

+0

Спасибо, но как сделать функцию для отправки запроса, который будет «синхронным запросом» – John

+0

@John: Независимо от документации, которую вы используете для XMLHttpRequest, найдите часть, в которой говорится об синхронных запросах. –

Смежные вопросы