Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> XMLHttpRequest - skrypt działa, ale nie zawsze.
Elokwent
post 24.04.2006, 10:01:13
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.05.2005

Ostrzeżenie: (0%)
-----


Witam.
Mam mały problem z XMLHttpRequest.
Wywołuje funkcje JS, która w tle wywołuje funkcje php. Do wywołania strony używam funkcji loadXMLDoc(url). I teraz problem polega na tym, że funkcja nie działa za każdym razem. Na 10 wywołań raz nie działa. Czy można stworzyć jakąś kontrolę, czy funkcja została wywołana poprawnie?
alert(req.readyState) zwroca zawsze zero a powinno 4. Chciałbym dopisać sprawdzenie czy skrypt sie wykonał, i jeśli się nie wykonał to wywołac funkcję loadXMLDoc(url) jeszcze raz (choć grozi to zapętleniem). Czy macie może podobne funkcje, które was nie zawodząquestionmark.gif

A oto bląd który otrzymuje przy wywołaniu funkcji pod Mozillą.
Błąd: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://.../funkcjeJScript.js :: processReqChange :: line 388" data: no]

gdzies wygooglowałem, że jest to związane z jakimś wewnętrznym błędem w Mozilli.

Kod
var req;

function loadXMLDoc(url) {
    req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch(e) {
            req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
           try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
          } catch(e) {
            try {
                  req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                  req = false;
            }
        }
    }
    if(req) {
        //alert(req.readyState);
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    }
    else
    {
        //alert("aaa");
    }
}

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) //wiersz 388 generujący błąd w Mozilla Firefox
        {
            // ...processing statements go here...
        } else
        {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}


Ten post edytował Elokwent 24.04.2006, 10:02:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 23:25