AJAX responseText ничего не получает - PullRequest
0 голосов
/ 20 июля 2010

Я написал этот простой скрипт 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 ]

2 голосов
/ 20 июля 2010

Написав request.onreadyStateChange = updatePage(), вы вызываете функцию updatePage и присваиваете ее возвращаемое значение onreadyStateChange (которое, кстати, должно быть в нижнем регистре)

Вынеобходимо присвоить самой функции onreadystatechange, не вызывая ее, удалив ().

Например:

request.onreadystatechange = updatePage;

Обратите внимание, что использование глобальной переменной request ужасноидея;ваш код не может отправлять два запроса одновременно.

Я настоятельно рекомендую вместо этого использовать существующую среду AJAX, например jQuery's .

1 голос
/ 20 июля 2010

ммм, вы вызываете свою функцию обновления при каждом изменении состояния, и все, кроме последнего, будут до того, как станут доступны какие-либо данные, что приведет к нежелательным результатам.

Вам нужно обновить страницу, когда 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);

....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...