diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2007-02-22 20:37:37 +0000 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2007-02-22 20:37:37 +0000 |
commit | fade976946fba8a9c9782bbbc56058fdc238b31f (patch) | |
tree | 58403aa228057c5b4e0ffc38955dc98a246165aa /src/ajax | |
parent | 1878aa96446aae7aa65ccbbd8a1dfa90301a043a (diff) | |
download | jquery-fade976946fba8a9c9782bbbc56058fdc238b31f.tar.gz jquery-fade976946fba8a9c9782bbbc56058fdc238b31f.zip |
Fix for #991
Diffstat (limited to 'src/ajax')
-rw-r--r-- | src/ajax/ajax.js | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js index 7eb1b91c3..814a6b85e 100644 --- a/src/ajax/ajax.js +++ b/src/ajax/ajax.js @@ -647,6 +647,13 @@ jQuery.extend({ // The transfer is complete and the data is available, or the request timed out if ( xml && (xml.readyState == 4 || isTimeout == "timeout") ) { requestDone = true; + + // clear poll interval + if (ival) { + clearInterval(ival); + ival = null; + } + var status; try { status = jQuery.httpSuccess( xml ) && isTimeout != "timeout" ? @@ -692,11 +699,13 @@ jQuery.extend({ s.complete(xml, status); // Stop memory leaks - xml.onreadystatechange = function(){}; - xml = null; + if(s.async) + xml = null; } }; - xml.onreadystatechange = onreadystatechange; + + // don't attach the handler to the request, just poll it instead + var ival = setInterval(onreadystatechange, 13); // Timeout checker if ( s.timeout > 0 ) @@ -711,12 +720,9 @@ jQuery.extend({ } }, s.timeout); - // save non-leaking reference - var xml2 = xml; - // Send the data try { - xml2.send(s.data); + xml.send(s.data); } catch(e) { jQuery.handleError(s, xml, null, e); } @@ -726,7 +732,7 @@ jQuery.extend({ onreadystatechange(); // return XMLHttpRequest to allow aborting the request etc. - return xml2; + return xml; }, handleError: function( s, xml, status, e ) { |