Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What might cause an XMLHttpRequest to never change state in Firefox?

I'm working on some old AJAX code, written in the dark dark days before jQuery. Strangely, it has been working fine for years, until today when it suddenly stopped firing its callback. Here's the basic code:

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

Checking the Firebug console, the request is being sent with no worries, and it is receiving the correct XML from the request URL, but the onreadystatechange function is not working at all. There's no javascript errors or anything else strange happening in the system.

I wish I could just rewrite everything using jQuery, but I don't have the time right now. What could possibly be causing this problem??


A further update - I've been able to test my code in a different browser (FFx 3.0) and it was working there, so it must be a problem with my browser. I'm running Firefox 3.5b4 on Vista, and I've tried it now with all my addons disabled with no luck. It's still really bugging me because I was working on this site yesterday (with the same browser setup) and there were no problems at all...

Actually I just took a look back in my Addons window and saw that Firebug was still enabled. If I disable Firebug, it works perfectly. If I enable it, it's broken. Firebug version 1.40.a31

like image 754
nickf Avatar asked Jun 03 '09 02:06

nickf


People also ask

Which property holds the status of the XMLHttpRequest?

The readyState property holds the status of the XMLHttpRequest. The onreadystatechange property defines a function to be executed when the readyState changes.

What is the difference between XMLHttpRequest and AJAX?

XMLHttpRequest is the raw browser object that jQuery wraps into a more usable and simplified form and cross browser consistent functionality. jQuery. ajax is a general Ajax requester in jQuery that can do any type and content requests.

What method processes the XMLHttpRequest data once it's been retrieved?

open() method. If this argument is true or not specified, the XMLHttpRequest is processed asynchronously, otherwise the process is handled synchronously. A detailed discussion and demonstrations of these two types of requests can be found on the synchronous and asynchronous requests page.

What is XMLHttpRequest object explain with an example?

XMLHTTPRequest object is an API which is used for fetching data from the server. XMLHTTPRequest is basically used in Ajax programming. It retrieve any type of data such as json, xml, text etc. It request for data in background and update the page without reloading page on client side.


2 Answers

is the url malformed? have you tried putting the whole thing in a try-catch and alerting the errors (if any)

is it failing on an authorization check? does the url in question require http-auth? (though there should be state changes in this case, I'll admit)

edit:

I have a really funny thought here. Are you using firefox 3.5 beta4? I develop a firefox extension for a browser-based game and recently discovered some odd behvaviour. With my extension or firebug observing the ajax requests made from the page, the script ccreating them would never get calledback. The request would be correctly observed and processed by both firebug and my extension (I could observe what was sent and received)... but the page itself would never hear from the request again -- like it had disappeared into a black hole.

Try turning off firebug (or at least turn off listening to 'Net' for that domain) and test it again

like image 128
Jonathan Fingland Avatar answered Sep 26 '22 08:09

Jonathan Fingland


Known Firefox bug affecting Firebug; see http://code.google.com/p/fbug/issues/detail?id=1569&q=xhr&colspec=ID%20Type%20Status%20Owner%20Test%20Summary for details :-)

like image 34
NickFitz Avatar answered Sep 22 '22 08:09

NickFitz