git.asbjorn.biz
/
jquery.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
464535e
)
Landing fixes for tickets #2935 and #2688 (Aborting ajax doesn't stop the setInterval...
author
John Resig
<jeresig@gmail.com>
Fri, 14 Nov 2008 04:16:00 +0000
(
04:16
+0000)
committer
John Resig
<jeresig@gmail.com>
Fri, 14 Nov 2008 04:16:00 +0000
(
04:16
+0000)
src/ajax.js
patch
|
blob
|
history
diff --git
a/src/ajax.js
b/src/ajax.js
index
7e024a3
..
4135e34
100644
(file)
--- a/
src/ajax.js
+++ b/
src/ajax.js
@@
-308,10
+308,11
@@
jQuery.extend({
s.accepts._default );
} catch(e){}
s.accepts._default );
} catch(e){}
- // Allow custom headers/mimetypes
+ // Allow custom headers/mimetypes and early abort
if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
- // cleanup active request counter
- s.global && jQuery.active--;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
// close opended socket
xhr.abort();
return false;
// close opended socket
xhr.abort();
return false;
@@
-322,8
+323,18
@@
jQuery.extend({
// Wait for a response to come back
var onreadystatechange = function(isTimeout){
// Wait for a response to come back
var onreadystatechange = function(isTimeout){
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
// The transfer is complete and the data is available, or the request timed out
// The transfer is complete and the data is available, or the request timed out
- if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
requestDone = true;
// clear poll interval
requestDone = true;
// clear poll interval