2011-12-16 71 views
0

我试图做 的tizag例子的DOM被更改的onreadystatechange函数中,像这样:AJAX功能目标

if(ajaxRequest.readyState == 4){ 
    document.myForm.time.value = ajaxRequest.responseText; 
} 

但是我想改变多个DOM目标的值,所以我的想法是尝试返回一个值。我修改了代码,但显然这不起作用。

下面是我改编的完整代码。您可以在底部看到我尝试访问2个不同脚本的位置。这是在所有可能的?:

function ajaxFunction(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
    // Create a function that will receive data sent from the server 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      return ajaxRequest.responseText; 
     } 
    } 
    ajaxRequest.open("GET", "/time.php", true); 
    var time = ajaxRequest.send(null); // trying to get value from 1st script 
    ajaxRequest.open("GET", "/date.php", true); 
    var date = ajaxRequest.send(null); // trying to get values from 2nd script 

    document.getElementById('time').innerHTML = time; // send 1st variable to DOM 
    document.getElementById('date').innerHTML = date; // send 2nd variable to DOM 
} 

回答

0

我觉得在调用ajax.open第三个参数表示请求是异步执行,这意味着从ajax.send调用的返回值不会的结果脚本从服务器。

您应该在附加到onreadystatechange的匿名函数的主体中设置您的局部变量。您可以检查ajax对象以确定返回哪个服务器脚本。

创建2个不同的ajax对象可能比较容易,其中1个用于请求获取日期,另一个用于请求获取时间。

另外我会建议寻找jquery,它为你做了很多管道工作,并提出了一个更简单的方法来执行ajax请求。