Avatar billede default Nybegynder
15. februar 2010 - 23:23 Der er 4 kommentarer

Hvad betyder disse fejl i Ajax scriptet

Hvad betyder disse to fejl, scriptet virker fint. Men kan se den melder fejl i Firefox's javascript konsol.

Fejl: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: http://ejendommeisverige.dk/chatv2/chat.php :: handleText :: line 57"  data: no]
Kildefil: http://xxxxxxx.dk/chatv2/chat.php
Linje: 57

Linje 57: if(http2.status == 200) {

Fejl: uncaught exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]"  nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)"  location: "JS frame :: http://xxxxxxxx.dk/chatv2/chat.php :: getText :: line 44"  data: no]

linje 44: timeoutId = setTimeout("main()", 1000);   

Hele scriptet:

<script language="JavaScript" type="text/javascript">
    function getXMLHTTPRequest() {
        try {
            req = new XMLHttpRequest();
        }
        catch(err1) {
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (err2) {
                try {
                        req = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                catch (err3) {
                    req = false;
                }
            }
        }
        return req;
    }

    var http = getXMLHTTPRequest();
    var http2 = getXMLHTTPRequest();

    function sendText() {
    if(document.getElementById("tekst").value.length != 0) {
if(timeoutId)clearTimeout(timeoutId);timeoutId=0;
        var modurl = "send.php?text="+document.getElementById("tekst").value+"&rand="+parseInt(Math.random()*999999999999999);
        http2.open("GET", modurl, true);
        http2.onreadystatechange = handleText2;
        http2.send(null);
                document.getElementById("tekst").value = ""
                timeoutId = setTimeout("main()", 1000);   
                }
    }

    function getText() {
        var modurl = "get.php?rand="+parseInt(Math.random()*999999999999999);
        http.open("GET", modurl, true);
        http.onreadystatechange = handleText;
        http.send(null);
    }

    function handleText2() {
        if (http2.readyState == 4) {
            if(http2.status == 200) {
                //alert(http2.responseText);
            }
        }
    }

    function handleText() {
        if (http.readyState == 4) {
            if(http.status == 200) {
                document.getElementById("beskeder").innerHTML = http.responseText+document.getElementById("beskeder").innerHTML;
            }
        }
    }
    var timeoutId = 0;
    function main() {
        getText();
        timeoutId = setTimeout("main()", 2000);   
    }
</script>
Avatar billede skelboe Nybegynder
17. februar 2010 - 08:42 #1
http://helpful.knobs-dials.com/index.php/%22Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)%22

"This usually happens when you have a XMLHttpRequest onerror handler in which you tried to read the result's status (or statusText) when that value is not available, usually meaning it was broken off, or it failed in a specific way."
Avatar billede tjens Nybegynder
17. februar 2010 - 19:37 #2
Når du har 2 setTimeout til main(), risikerer du så ikke at køre getText() 2 gang nærmest samtidig?

Prøv at fjerne den fra sendText() og se om det bliver mere stabilt.
Avatar billede default Nybegynder
17. februar 2010 - 21:53 #3
Meningen er at den ikke må Hente Beskeder når man er ved at sende, der går nemlig ged i at den skriver dobbelt beskeder, hvis dette ikke er på. Men kan prøve at fjerne det.
Avatar billede tjens Nybegynder
18. februar 2010 - 15:23 #4
Du kan også prøve en
     clearTimeout( timeoutId );
i din sendText() funktion

Jeg tror nemlig ikke at en tidligere timeout annuleres bare fordi du lægger en ny i samme variabel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester