[英]AJAX responseText not getting anything
我写了这个简单的AJAX脚本:
var request;
function createRequest(){
request = null;
try{
request = new XMLHttpRequest();
}catch(failed){
request = null;
}
if(request==null){
alert("Incompatible Browser");
}
}
function getProd(form){
createRequest();
var w = form.list.selectedIndex;
var cat = form.list.options[w].text;
var url = "showProd.do?prodCat=" + cat;
request.open("GET",url,false);
//Send request to server
request.onreadyStateChange = updatePage();
request.send(null);
}
function updatePage(){
//if(request.readyState == 4){
//add your code here
var options = "Bloody Server";
options = request.responseText;
//docWrite(options);
alert(options);
//}
}
我使用萤火虫检查我从服务器获得的响应。 它绝对好,类型为“ text / html”。
问题是它没有显示在警报框中!
通过编写request.onreadyStateChange = updatePage()
,您将调用 updatePage
函数并将其返回值分配给onreadyStateChange
(顺便说一下,该值必须为小写)
您需要将函数本身分配给onreadystatechange
而无需通过删除()
来调用它。
例如:
request.onreadystatechange = updatePage;
注意,使用全局request
变量是一个可怕的主意。 您的代码无法一次发送两个请求。
我强烈建议您改用现有的AJAX框架,例如jQuery的 。
嗯,您在每次状态更改时都调用更新函数,除最后一次以外,所有更新都将在没有可用数据之前进行,从而导致不良结果。
当readystate == 4时,您需要更新页面
createRequest();
....
request.open("GET",url,false);
//Send request to server
request.onreadyStateChange = function(){
if(request.readyState == 4){
//add your code here
var options = "Bloody Server";
options = request.responseText;
//docWrite(options);
alert(options);
}
};
request.send(null);
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.