ajax函数,用于从2个服务器端脚本向2个DOM目标返回值

ajax function for returning values from 2 server-side scripts to 2 DOM targets

本文关键字:2个 DOM 目标 返回值 脚本 服务器端 用于 ajax 函数      更新时间:2023-09-26

我想做的tizag示例在onreadystatechange函数内部更改DOM,如下所示:

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
}

我认为ajax.open调用中的第三个参数表明请求是异步执行的,这意味着ajax.send调用的返回值不会是来自服务器的脚本的结果。

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

创建两个不同的ajax对象可能更容易,一个用于请求获取日期,另一个用于请求获取时间。

我还建议您研究一下jquery,它为您做了大量的管道工作,并提供了一种更简单的方法来执行ajax请求。