основной вопрос xmlHttp - PullRequest
       17

основной вопрос xmlHttp

0 голосов
/ 22 августа 2009

У меня возникли некоторые проблемы с моим кодом JavaScript, вызывающим мой php. Кто-нибудь видит ошибку в следующем коде? Клянусь, я использую такой же код в другой части сайта ...

var xmlHttp = createXmlHttpRequestObject();
var favSongArray = [];

function createXmlHttpRequestObject(){
  var xmlHttp;

  try{
    xmlHttp = new XMLHttpRequest();
  }
  catch(e){
   var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                "MSXML2.XMLHTTP.5.0",
                                "MSXML2.XMLHTTP.4.0",
                                "MSXML2.XMLHTTP.3.0",
                                "MSXML2.XMLHTTP",
                                "Microsoft.XMLHTTP");

  for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++){
    try{
      xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
    }
    catch(e){}
  }
}

if(!xmlHttp){
  alert("Error creating the XMLHttpRequest object.");
}
else{
  return xmlHttp;
}
}


function process(){

  if(xmlHttp){
    alert("sever is available");
    //if yes try
    try{

      xmlHttp.open("GET", "php/getUntimed.php", true);
      xmlHttp.onreadystatechange = function(){handleRequestStateChange();};
      alert("attempted to call p_handleRequestStateChange_test");
      xmlHttp.send(null);
    }//end try
    catch(e){
      alert("Can't connect to server: \n" + e.toString());
    }//end catch
  }//end if xmlHHttp

}//end function

function handleRequestStateChange(){
  if(xmlHttp.readyState == 4){

  if(xmlHttp.status == 200){
   try{
     u_handleServerResponse();
   }//end try
   catch(e){
     alert("Error reading the response: " +e.toString());
   }//end catch
 }//end if
 else{
   alert("There was a problem retriving the data:\n" + xmlHttp.statusText);
 }//end else
 }//end if
 }//end function

 function u_handleServerResponse(){
 //need to clear array each time
 var response = xmlHttp.responseText;

favSongArray = response.split("+");
alert("made it here");
//getFlashMovie("trackTimer").trackTimer(favSongArray[0]);
}

process () вызывается из триггера onSubmit. Я продолжаю получать xmlHttp.status ноль. Имеет ли это смысл для кого-либо? Спасибо

Ответы [ 4 ]

3 голосов
/ 22 августа 2009

status == 0 обычно означает, что он был прерван - либо нажатием ESC , либо изменением текущего адреса.

Или, поскольку вы используете глобальный xmlHttp, возможно, вы звоните open и / или send до последнего запрос успел закончить. Не совсем уверен, какой, но один из них начинает с вызова abort.

1 голос
/ 22 августа 2009

Как Джонатан Лоновски говорит, что , status == 0 означает прервано, и вы сказали, что выполняете тот скрипт onsubmit, который запускает отправку формы, таким образом перезагрузите страницу и отмените запрос Ajax. , Взгляните здесь тоже.

1 голос
/ 22 августа 2009

Просто перейдите сюда.

http://docs.jquery.com/Ajax

Простой пример:

$.get('MyUrl.aspx', 'MyId=' + id, function(data){
    $(data).appendTo($('#MyDiv'));
});
0 голосов
/ 22 августа 2009

Почему бы вам не попробовать использовать фреймворки ajax? Например, jQuery .

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