Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Type Mismath w iE
Forum PHP.pl > Forum > Przedszkole
offroad
Witam,

mam taki problem napisałem coś takiego :

Kod
function getXMLHttpRequestObject()
   {
       var wersjeMSXML = new Array(
       "MSXML2.XMLHTTP.6.0",
       "MSXML2.XMLHTTP.5.0",
       "MSXML2.XMLHTTP.4.0",
       "MSXML2.XMLHTTP.3.0",
       "MSXML2.XMLHTTP",
       "Microsoft.XMLHTTP"
     );
  
     try{
       return new XMLHttpRequest();
     }
     catch(e){
       for (var indeks in wersjeMSXML){
         try{
           return new ActiveXObject(wersjeMSXML[indeks]);
         }
         catch(e){
         }
       }
       return null;
     }
   }
  
   var run = false;
  
  
   function reputation_act(pid, topic_id, author_id, action_id)
   {
   if(run){
   return;
   }
  
   var url  = ipb_var_base_url+'autocom=reputation&CODE=add&pid='+pid+'&topic_id='+topic_id+'&author_id='+author_id+'&action='+action_id;
   var points = document.getElementById("RepPoints"+pid);
   var but = document.getElementById("rep_buttons"+pid);
   but.removeChild(but.childNodes[0]);
   but.removeChild(but.childNodes[1]);
     var XMLHttpRequestObject = getXMLHttpRequestObject();
     if(XMLHttpRequestObject){
     run = true;
       XMLHttpRequestObject.open("POST", url);
       XMLHttpRequestObject.setRequestHeader(
         'Content-Type', 'application/x-www-form-urlencoded');
       XMLHttpRequestObject.onreadystatechange = function()
       {
         if (XMLHttpRequestObject.readyState == 4){
           if(XMLHttpRequestObject.status == 200){
  
            points.innerHTML   = XMLHttpRequestObject.responseText
  
           }
           run = false;
           delete XMLHttpRequestObject;
  
         }
       }
       XMLHttpRequestObject.send(null);
     }
   }
  
  
  
   function rep_post_stat (postID, st)
   {
   if(run){
     show();
     return;
     }
  
     var url         = ipb_var_base_url+'autocom=reputation&CODE=p_statistic&pid='+postID+'&st='+st;
     var stat_window = document.getElementById("topic_who"+postID);
     var change_link = document.getElementById("stat_but"+postID);
     var general_link = document.getElementById("rep-general-"+postID);
  
     var XMLHttpRequestObject = getXMLHttpRequestObject();
     if(XMLHttpRequestObject){
     run = true;
       XMLHttpRequestObject.open("POST", url);
       XMLHttpRequestObject.setRequestHeader(
         'Content-Type', 'application/x-www-form-urlencoded');
       XMLHttpRequestObject.onreadystatechange = function()
       {
         if (XMLHttpRequestObject.readyState == 4){
           if(XMLHttpRequestObject.status == 200){
            ans_func = XMLHttpRequestObject.responseText.split("@");
            stat_window.innerHTML   = ans_func[0];
            change_link.innerHTML   = ans_func[1];
            general_link.innerHTML   = ans_func[2];
           }
           hide();
           run = false;
           delete XMLHttpRequestObject;
  
         }
       }
       XMLHttpRequestObject.send(null);
     }
  
   }
   var loading = document.getElementById("loading-layer");
   function show()
   {
  
   loading.setAttribute("style","display: block; position: fixed; top:50%;right: 50%");
    
   }
   function hide()
   {
  
   loading.setAttribute("style","display:none;");
  
   }


działa idealnie w Firefoxie ale w IE wywala się funkcja reputation_act błąd: type mismath

Rzadko używam Ajax-a czy w ogóle JS i nie mogę sobie z tym poradzić.

Z góry dziękuję.
korro
Tak przeglądam ten skrypt, i widzę nadużywanie try...catch. Powinno używać się tego do rzeczywistych błędów, opieranie logiki działania kodu o try...catch jest złe. Mało wydajne i nieeleganckie.

Spróbuj podmienić funkcję getXMLHttpRequestObject
[JAVASCRIPT] pobierz, plaintext
  1. function getXMLHttpRequestObject()
  2. {
  3. if (window.XMLHttpRequest) {
  4. return new window.XMLHttpRequest;
  5. }
  6. else {
  7. try {
  8. return new ActiveXObject("MSXML2.XMLHTTP.3.0");
  9. }
  10. catch(ex) {
  11. return null;
  12. }
  13. }
  14. }
[JAVASCRIPT] pobierz, plaintext
offroad
Zmieniłem, oczywiście nic to nie pomaga tylko jedna funkcja się wywalała więc to nie jest sprawka funkcji getXMLHttpRequestObject.
korro
Napisz w której linijce jest błąd.
offroad
ok poradziłem sobie błedne było :

Kod
but.removeChild(but.childNodes[1]);


ie uważało ze tego niema (niema co usunąć)

dlaczego tego nie wiem natomiast po nadaniu id wewnątrz węzła wszystko zaczęło chodzić.

Dzięki korro za chęć pomocy i za douczenie mnie w kwestii funkcji getXMLHttpRequestObject.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.