AJAX responseText没有得到任何东西

时间:2010-07-19 20:05:43

标签: javascript ajax

我写了这个简单的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”类型。

问题是它没有出现在警告框中!

2 个答案:

答案 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);

....