• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

AJAX: Uncaught Exception in Firefox

bojome

Neues Mitglied
Hallo,

ich habe ein Problem bei einem AJAX Request. Beim ersten mal funktioniert alles problemlos jedoch wird ab dem zweiten Request eine Uncaught Exception im Firefox ausgelöst. Der Code für das Javascript schreibe ich hier rein:
Code:
var req = null;
if (window.XMLHttpRequest)
{
    req = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
  req = new ActiveXObject("Microsoft.XMLHTTP");
}
function ajaxanfrage(url,params)
{    
    if (req != null)
    {
        req.open("POST", url, true);
        
        //Send the proper header information along with the request
        req.setRequestHeader("Pragma", "no-cache");
        req.setRequestHeader("Cache-Control", "must-revalidate");
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-length", params.length);
        req.setRequestHeader("Connection", "close");
        
        //Beim abschliessen des request wird diese Funktion ausgeführt
        req.onreadystatechange = response;
        
        req.send(params);
    }
}


function response() {
    switch(req.readyState) 
    {
        case 4:
            var responseMsg = req.responseText;
            response = req.responseText.split(";");
            funktionStarten(response[0], responseMsg);
            break;
        default:
            return false;
            break;
    }
}
Ich löse das Request über
Code:
 <button onclick=\"javascript:sendData()\" id=\"ausloesen\">Auslösen</button>
aus.
Die sendData() Funktion sieht so aus:
Code:
function sendData()
        {
            ajaxanfrage('handlePHPEvent.php', 'param1=paramvalue');
        }
Die Fehlermeldung lautet "uncaught exception: [Exception... "'JavaScript component does not have a method named: "handleEvent"' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "JS frame :: chrome://firebug/content/spy.js :: callPageHandler :: line 744" data: no]"

Viele Grüße

Johannes
 
Da die Fehlermeldung nicht in Einklang mit deinem Code zu bringen ist (es gibt nirgendwo eine Funktion mit dem Namen handleEvent läßt sich deine Frage nicht beantworten. Wie lautet denn die Fehlermeldung wenn du Firebug deaktivierst?
 
Hallo,

nach Deaktivierung von FireBug sieht die Fehlermeldung so aus
Fehler: [Exception... "'JavaScript component does not have a method named: "handleEvent"' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x80570030 (NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)" location: "JS frame :: http://xxx/inc/js/ajax.js :: ajaxanfrage :: line 26" data: no]
Quelldatei: http://xxx//inc/js/ajax.js
Zeile: 26

In Zeile 26 in der ajax.js steht req.send(params);.

Viele Grüße
 
Die Meldung läßt sich nicht erklären.

Normalerweise kommt eine ähnliche Meldung, wenn du die Same-Origin-Policy verletzt, aber was das mit dem handleEvent soll ist völlig schleierhaft.

EDIT: Kann es sein, dass du eine Greasemonky Skript auf der seite aktiviert hast? Oder könnte irgendein AddOn da reinpfuschen?
 
Dann läßt sich so nicht weiterhelfen. Ein online Beispiel hast du nicht?
 
Ach so, eine Sache die an deinem code falsch ist, du musst natürlich die Parameter URL kodieren, vor allem wenn diese Sonderzeichen enthalten.
 
Ich habe leider kein online Beispiel derzeit.
Ich habe jetz noch params = encodeURI(params); eingefügt aber die Problematik wird dadurch nicht beseitigt.
 
Dann läßt sich dir nicht helfen, der Code den du uns gezeigt hast, enthält keinen Fehler und sollte funktionieren (da er nicht vollständig ist, läßt sich das aber nicht 100% sicher sagen), warum er das bei dir nicht tut, ist wie gesagt nicht erklärbar.

Gibt es im Opera oder IE keine Fehlermeldung?
 
Der Fehler besteht anscheinend auch bei anderen Browsern, die liefern jedoch keine so deutliche Fehlermeldung wie der Firefox
 
Ich habe das Problem gelöst. Es fehlte wohl an einer Stelle ein simples var
Mit dem Code funktioniert es:
Code:
function response() {
    switch(req.readyState) 
    {
        case 4:
            var responseMsg = req.responseText;
            [B]VAR[/B] response = req.responseText.split(";");
            funktionStarten(response[0], responseMsg);
            break;
        default:
            return false;
            break;
    }
}
 
Die anderen Browser liefern auch aussagekräftige Fehlermeldungen, man muss nur Wissen wo.

Der Fehler ist klar, du überschreibst die Funktion mit der Variabel. In JS gibt es keinen Unterschied zwischen einer Variabel und einer Funktion. Das hätten ich aber eigentlich auch sehen müssen, nur die FF Meldung ist in dem Fall verwirrend.
 
Zurück
Oben