git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't set the context in .load() as it stops the global ajax events from firing....
[jquery.git]
/
src
/
ajax.js
diff --git
a/src/ajax.js
b/src/ajax.js
index
b5adf2c
..
d92d26d
100644
(file)
--- a/
src/ajax.js
+++ b/
src/ajax.js
@@
-45,18
+45,19
@@
jQuery.fn.extend({
}
}
}
}
+ var self = this;
+
// Request the remote document
jQuery.ajax({
url: url,
type: type,
dataType: "html",
data: params,
// Request the remote document
jQuery.ajax({
url: url,
type: type,
dataType: "html",
data: params,
- context:this,
complete: function( res, status ) {
// If successful, inject the HTML into all the matched elements
if ( status === "success" || status === "notmodified" ) {
// See if a selector was specified
complete: function( res, status ) {
// If successful, inject the HTML into all the matched elements
if ( status === "success" || status === "notmodified" ) {
// See if a selector was specified
- this.html( selector ?
+ self.html( selector ?
// Create a dummy div to hold the results
jQuery("<div />")
// inject the contents of the document in, removing the scripts
// Create a dummy div to hold the results
jQuery("<div />")
// inject the contents of the document in, removing the scripts
@@
-71,7
+72,7
@@
jQuery.fn.extend({
}
if ( callback ) {
}
if ( callback ) {
- this.each( callback, [res.responseText, status, res] );
+ self.each( callback, [res.responseText, status, res] );
}
}
});
}
}
});
@@
-178,16
+179,15
@@
jQuery.extend({
// implement the XMLHttpRequest in IE7 (can't request local files),
// so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
// implement the XMLHttpRequest in IE7 (can't request local files),
// so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
- xhr: function() {
- if ( window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ) {
+ xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
+ function() {
return new window.XMLHttpRequest();
return new window.XMLHttpRequest();
-
- } else {
+ } :
+ function() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
- }
- },
+ },
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
@@
-391,14
+391,17
@@
jQuery.extend({
// Wait for a response to come back
var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
// Wait for a response to come back
var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
- // The request was aborted, clear the interval and decrement jQuery.active
+ // The request was aborted
if ( !xhr || xhr.readyState === 0 ) {
if ( !xhr || xhr.readyState === 0 ) {
- requestDone = true;
- xhr.onreadystatechange = jQuery.noop;
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ complete();
+ }
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
}
// 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
@@
-448,6
+451,22
@@
jQuery.extend({
}
};
}
};
+ // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ if ( xhr ) {
+ oldAbort.call( xhr );
+ if ( xhr ) {
+ xhr.readyState = 0;
+ }
+ }
+
+ onreadystatechange();
+ };
+ } catch(e) { }
+
// Timeout checker
if ( s.async && s.timeout > 0 ) {
setTimeout(function() {
// Timeout checker
if ( s.async && s.timeout > 0 ) {
setTimeout(function() {
@@
-460,7
+479,7
@@
jQuery.extend({
// Send the data
try {
// Send the data
try {
- xhr.send( type === "POST" || type === "PUT" ? s.data : null );
+ xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
} catch(e) {
jQuery.handleError(s, xhr, null, e);
// Fire the complete handlers
} catch(e) {
jQuery.handleError(s, xhr, null, e);
// Fire the complete handlers
@@
-512,7
+531,7
@@
jQuery.extend({
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
- s.error.call( s.context || window, xhr, status, e );
+ s.error.call( s.context || s, xhr, status, e );
}
// Fire the global callback
}
// Fire the global callback
@@
-555,12
+574,12
@@
jQuery.extend({
},
httpData: function( xhr, type, s ) {
},
httpData: function( xhr, type, s ) {
- var ct = xhr.getResponseHeader("content-type"),
- xml = type === "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;
if ( xml && data.documentElement.nodeName === "parsererror" ) {
data = xml ? xhr.responseXML : xhr.responseText;
if ( xml && data.documentElement.nodeName === "parsererror" ) {
- throw "parsererror";
+ jQuery.error( "parsererror" );
}
// Allow a pre-filtering function to sanitize the response
}
// Allow a pre-filtering function to sanitize the response
@@
-571,20
+590,14
@@
jQuery.extend({
// The filter can actually parse the response
if ( typeof data === "string" ) {
// The filter can actually parse the response
if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
// If the type is "script", eval it in global context
// If the type is "script", eval it in global context
- if ( type === "script" ) {
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
jQuery.globalEval( data );
}
jQuery.globalEval( data );
}
-
- // Get the JavaScript object, if JSON is used.
- if ( type === "json" ) {
- if ( typeof JSON === "object" && JSON.parse ) {
- data = JSON.parse( data );
- } else {
- data = (new Function("return " + data))();
- }
- }
}
return data;
}
return data;
@@
-637,7
+650,7
@@
jQuery.extend({
}
});
}
});
- } else if ( !traditional && typeof obj === "object" ) {
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
// Serialize object item.
jQuery.each( obj, function( k, v ) {
buildParams( prefix + "[" + k + "]", v );
// Serialize object item.
jQuery.each( obj, function( k, v ) {
buildParams( prefix + "[" + k + "]", v );