2009-06-03 7 views
5

Ich arbeite an einigen alten AJAX-Code, in den dunklen Tagen vor jQuery geschrieben. Seltsamerweise hat es seit Jahren gut funktioniert, bis heute, als es plötzlich aufhörte, seinen Rückruf zu starten. Hier ist der Grundcode:Was könnte dazu führen, dass ein XMLHttpRequest seinen Status in Firefox niemals ändert?

var xml = new XMLHttpRequest(); // only needs to support Firefox 
xml.open("GET", myRequestURL, true); 
xml.onreadystatechange = function() { alert ('test'); }; 
xml.send(null); 

die Firebug-Konsole überprüft, wird die Anforderung ohne Sorgen gesendet werden, und es wird die richtigen XML-Daten aus der Anfrage-URL empfangen, aber die onreadystatechange Funktion gar nicht funktioniert. Es gibt keine JavaScript-Fehler oder sonst etwas seltsames geschieht im System.

Ich wünschte, ich könnte alles mit jQuery neu schreiben, aber ich habe jetzt nicht die Zeit. Was könnte dieses Problem verursachen?


Ein weiterer Update - ich habe in der Lage meinen Code in einem anderen Browser (FFx 3.0) und es funktioniert dort zu testen, so dass es ein Problem mit meinem Browser sein muss. Ich benutze Firefox 3.5b4 unter Vista, und ich habe es jetzt mit allen meinen Addons versucht, die ohne Glück deaktiviert wurden. Es nervt mich immer noch, weil ich gestern auf dieser Seite gearbeitet habe (mit der gleichen Browser-Konfiguration) und es überhaupt keine Probleme gab ...

Eigentlich habe ich nur einen Blick zurück in mein Addons-Fenster geworfen und gesehen, dass Firebug war immer noch aktiviert. Wenn ich Firebug deaktiviere, funktioniert es einwandfrei. Wenn ich es aktiviere, ist es kaputt. Firebug Version 1.40.a31

+0

Welche Firefox-Version verwenden Sie? Vielleicht ist es ein Firefox-Bug? Ich bekomme nicht den gleichen Müll wie in Firebug. –

+0

sehe meine Bearbeitung. es ist ein Fehler in Firefox 3.5beta4 scheint es –

+0

Ich wäre nicht überrascht, wenn ein BETA-Browser einen Fehler hatte. ;) –

Antwort

4

ist die URL fehlerhaft? haben Sie versucht, die ganze Sache in einen Try-Catch und Alarmierung der Fehler (falls vorhanden)

ist es fehlgeschlagen auf eine Berechtigungsprüfung? benötigt die fragliche URL http-auth? (Obwohl es sollte Zustandsänderungen in diesem Fall sein, werde ich zugeben)

edit:

Ich habe einen wirklich lustigen Gedanken hier. Verwenden Sie Firefox 3.5 Beta4? Ich entwickle eine Firefox-Erweiterung für ein browserbasiertes Spiel und habe kürzlich ein merkwürdiges Verhalten entdeckt. Wenn meine Erweiterung oder der Feuerwächter die Ajax-Anfragen von der Seite beobachtet, würde das Skript, das sie erstellt, niemals zurückgerufen werden. Die Anfrage würde sowohl von Firebug als auch von meiner Erweiterung korrekt beobachtet und verarbeitet werden (ich konnte beobachten, was gesendet und empfangen wurde) ... aber die Seite selbst würde nie wieder von der Anfrage hören - als wäre sie in ein schwarzes Loch verschwunden.

Versuchen ausgeschaltet firebug (oder zumindest deaktivieren für die Domäne zu ‚Net‘ hören) und testen wieder

0

Es scheint unwahrscheinlich, dass onreadystatechange nicht mehr funktioniert. Ist es möglich, dass die 'alert' Funktion irgendwie deaktiviert oder außer Kraft gesetzt wurde? Können Sie die Warnung durch einen Code ersetzen, um die Seite sichtbar zu machen und ihre Funktionalität auf diese Weise zu überprüfen? (Ich weiß, es ist eine Strecke, aber es scheint nur so seltsam, dass onreadystatechange nicht funktionieren würde!)

+0

yeah, ich habe versucht, Alarm ("foo") auf die Zeile vor dem onreadystatechange zu setzen und das funktioniert gut. – nickf

+0

Wenn onreadystatechange nicht funktionierte, denke ich, dass das Web zusammenbrechen würde. Vielleicht wird das XmlHttpRequest-Objekt gelöscht oder abgebrochen, bevor die Antwort zurückkommt? Gibt es mehr zum Repro-Code, oder ist das was du zeigst? Vielleicht ist deine Firefox-Installation beschädigt? * grins * – Bruce

+0

Wenn die angeforderte Domain nicht gefunden wurde, gäbe es keine Statusänderung, aber da * sollte * ein Fehler geworfen werden –

Verwandte Themen