我写了这个简单的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);
//}
}
我使用firebug来检查我从服务器获得的响应。它非常好,是“text / html”类型。
问题是它没有出现在警告框中!
答案 0 :(得分:2)
通过编写request.onreadyStateChange = updatePage()
,您调用 updatePage
函数并将其返回值分配给onreadyStateChange
(顺便说一下,它必须是小写的)
您需要将功能本身分配给onreadystatechange
而不通过移除()
来调用它。
例如:
request.onreadystatechange = updatePage;
请注意,使用全局request
变量是一个可怕的想法;您的代码不能一次发送两个请求。
我强烈建议您使用现有的AJAX框架,例如jQuery's。
答案 1 :(得分:1)
您需要在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);
....