2009-06-03 6 views
5

Je travaille sur un vieux code AJAX, écrit dans les jours sombres et sombres avant jQuery. Étrangement, cela fonctionne bien depuis des années, jusqu'à aujourd'hui, quand il a soudainement cessé de tirer son rappel. Voici le code de base:Qu'est-ce qui pourrait faire en sorte que XMLHttpRequest ne change jamais d'état dans Firefox?

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

Vérification de la console Firebug, la demande est envoyée sans soucis, et il reçoit le code XML correct à partir de l'URL de la requête, mais la fonction onreadystatechange ne fonctionne pas du tout. Il n'y a pas d'erreurs javascript ou quoi que ce soit d'étrange qui se passe dans le système. Je voudrais juste pouvoir réécrire tout en utilisant jQuery, mais je n'ai pas le temps en ce moment. Qu'est-ce qui pourrait causer ce problème ??


Une autre mise à jour - j'ai pu tester mon code dans un autre navigateur (FFx 3.0) et il y travaillait, il doit donc être un problème avec mon navigateur. Je cours Firefox 3.5b4 sur Vista, et je l'ai essayé maintenant avec tous mes addons désactivés sans chance. Cela m'inquiète toujours parce que je travaillais sur ce site hier (avec la même configuration de navigateur) et qu'il n'y avait aucun problème ...

En fait, j'ai juste regardé dans ma fenêtre Addons et j'ai vu que Firebug était toujours activé. Si je désactive Firebug, cela fonctionne parfaitement. Si je l'active, c'est cassé. Firebug version 1.40.a31

+0

Quelle version de Firefox utilisez-vous? Peut-être que c'est un bug de Firefox? Je ne reçois pas la même décharge que vous faites dans Firebug. –

+0

voir mon édition. c'est un bug dans firefox 3.5beta4 il semble –

+0

Je ne serais pas surpris si un navigateur BETA avait un bug. ;) –

Répondre

4

est l'url malformée? avez-vous essayé de mettre le tout dans un try-catch et d'alerter les erreurs (le cas échéant)

est-il échouer sur un contrôle d'autorisation? l'URL en question nécessite-t-elle l'authentification http? (Mais il devrait y avoir des changements d'état dans ce cas, je vais admettre)

modifier:

J'ai une pensée vraiment drôle ici. Utilisez-vous firefox 3.5 beta4? Je développe une extension firefox pour un jeu basé sur un navigateur et j'ai récemment découvert un behvaviour étrange. Avec mon extension ou firebug observant les requêtes ajax faites à partir de la page, le script les créant ne serait jamais rappelé. La requête serait correctement observée et traitée par firebug et mon extension (je pouvais observer ce qui était envoyé et reçu) ... mais la page elle-même n'entendrait plus jamais la requête - comme si elle avait disparu dans un trou noir.

Essayez de désactiver Firebug (ou au moins désactiver l'écoute de « Net » pour ce domaine) et le tester à nouveau

0

Il semble peu probable qu'un changement de système sur un système cesse de fonctionner. Est-il possible que la fonction 'alerte' ait été désactivée ou annulée? Pouvez-vous remplacer l'alerte par du code pour effectuer un changement visible dans la page et vérifier ses fonctionnalités de cette façon? (Je sais, c'est un tronçon, mais il semble juste si étrange que onreadystatechange ne fonctionnerait pas!)

+0

ouais, j'ai essayé de mettre alert ("foo") sur la ligne avant le onreadystatechange et cela fonctionne bien. – nickf

+0

si onreadystatechange ne fonctionnait pas, je pense que le web s'effondrerait. peut-être que l'objet XmlHttpRequest est supprimé ou abandonné avant que la réponse ne revienne? Y at-il plus au code de repro, ou est ce que vous montrez le tout? Peut-être que votre installation de Firefox est corrompue? * grin * – Bruce

+0

si le domaine demandé n'a pas été trouvé, il n'y aurait pas de changement d'état, mais il devrait y avoir * une erreur * –

Questions connexes