множественный xmlhttprequest на странице - PullRequest
0 голосов
/ 09 ноября 2010

У меня ошибка при использовании нового XMLHttpRequest () во второй раз в коде javascript, вызываемом из события textbox на странице.мой javascript находит предложения для ввода текста из sql, чтобы сделать это, я использую xmlhttprequest, он прекрасно работает, когда это в первый раз, но когда я продолжаю печатать в текстовом поле, я получаю «typeerror: xmlhttprequest не costructor» (эта ошибка происходит тольков Firefox)

это мой код функции fnNull () {};function changeofstate () {if (XMLHttpRequest.readyState == 4) {что угодно;

} XMLHttpRequest.onreadystatechange = fnNull ();} function whentextchange () {var WebURL = "URL здесь";XMLHttpRequest = CreateXmlHttpObject (changeOfState);XMLHttpRequest.open ("GET", WebURL, true);XMLHttpRequest.send (нуль);XMLHttpRequestt.abort ();}

}

функция CreateXmlHttpObject (обработчик) {

   var objXmlHttpReq = null;
   var Req = null;

               if (navigator.userAgent.indexOf("Opera")>=0)
               {                  
               return ;
              }
              if (navigator.userAgent.indexOf("MSIE")>=0)
              { 
               var strName="Msxml2.XMLHTTP";
               if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
               {
               strName="Microsoft.XMLHTTP";
               } 
              try
               {

               objXmlHttpReq=new ActiveXObject(strName);
               objXmlHttpReq.onreadystatechange = handler;

               return objXmlHttpReq;
              } 
              catch(e)
              {                
               return ;
               } 
               }
               if (navigator.userAgent.indexOf("Mozilla") >= 0) {
                 try
               {
                        if (Req == null) {
                      Req = new XMLHttpRequest();
                   }

                         Req.onload = handler;
                       Req.onerror = handler;
                       return Req;

                   }
                   catch (e) {
                       alert(e);
                   alert(Req.responseText)
                       alert(e);
                       return;
                   } 
               }

}

1 Ответ

0 голосов
/ 09 ноября 2010

Вы должны назвать свой объект запроса как-нибудь иначе, чем XMLHttpRequest. Это может переопределить объект XMLHttpRequest в браузере. Таким образом, давая вам ошибку.

XMLHttpRequest = CreateXmlHttpObject(changeOfState);

Назначение переменной XMLHttpRequest таким образом, на самом деле использует глобальную область видимости. Вы должны использовать var и другое имя переменной

var req = CreateXmlHttpObject(changeOfState);

Надеюсь, это прояснится.

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