aboutsummaryrefslogtreecommitdiffstats
path: root/src/ajax
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2007-02-22 20:37:37 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2007-02-22 20:37:37 +0000
commitfade976946fba8a9c9782bbbc56058fdc238b31f (patch)
tree58403aa228057c5b4e0ffc38955dc98a246165aa /src/ajax
parent1878aa96446aae7aa65ccbbd8a1dfa90301a043a (diff)
downloadjquery-fade976946fba8a9c9782bbbc56058fdc238b31f.tar.gz
jquery-fade976946fba8a9c9782bbbc56058fdc238b31f.zip
Fix for #991
Diffstat (limited to 'src/ajax')
-rw-r--r--src/ajax/ajax.js22
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 ) {