我正在尝试做什么 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
}
答案 0 :(得分:0)
我认为调用ajax.open
中的第3个参数表示请求是异步执行的,这意味着来自ajax.send
调用的返回值将不是来自服务器。
您应该在附加到onreadystatechange
的匿名函数的主体中设置局部变量。您可以检查ajax对象以确定返回的服务器脚本。
创建2个不同的ajax对象可能更容易,1个用于获取日期的请求,另一个用于获取时间的请求。
另外我建议查看jquery,它为你做了很多管道工作,并提供了一种更简单的方法来执行ajax请求。