繁体   English   中英

AJAX responseText没有得到任何东西

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM