summaryrefslogtreecommitdiffstats
path: root/js/vendor/jquery/src/ajax
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/jquery/src/ajax')
-rw-r--r--js/vendor/jquery/src/ajax/jsonp.js39
-rw-r--r--js/vendor/jquery/src/ajax/load.js32
-rw-r--r--js/vendor/jquery/src/ajax/parseJSON.js4
-rw-r--r--js/vendor/jquery/src/ajax/parseXML.js9
-rw-r--r--js/vendor/jquery/src/ajax/script.js28
-rw-r--r--js/vendor/jquery/src/ajax/var/location.js3
-rw-r--r--js/vendor/jquery/src/ajax/var/nonce.js4
-rw-r--r--js/vendor/jquery/src/ajax/var/rquery.js6
-rw-r--r--js/vendor/jquery/src/ajax/xhr.js115
9 files changed, 148 insertions, 92 deletions
diff --git a/js/vendor/jquery/src/ajax/jsonp.js b/js/vendor/jquery/src/ajax/jsonp.js
index ff0d53899..666e5d1e6 100644
--- a/js/vendor/jquery/src/ajax/jsonp.js
+++ b/js/vendor/jquery/src/ajax/jsonp.js
@@ -1,4 +1,4 @@
-define([
+define( [
"../core",
"./var/nonce",
"./var/rquery",
@@ -9,14 +9,14 @@ var oldCallbacks = [],
rjsonp = /(=)\?(?=&|$)|\?\?/;
// Default jsonp settings
-jQuery.ajaxSetup({
+jQuery.ajaxSetup( {
jsonp: "callback",
jsonpCallback: function() {
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
this[ callback ] = true;
return callback;
}
-});
+} );
// Detect, normalize options and install callbacks for jsonp requests
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
@@ -24,7 +24,10 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
var callbackName, overwritten, responseContainer,
jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
"url" :
- typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data ) && "data"
);
// Handle iff the expected data type is "jsonp" or we have a parameter to set
@@ -43,14 +46,14 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
}
// Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
+ s.converters[ "script json" ] = function() {
if ( !responseContainer ) {
jQuery.error( callbackName + " was not called" );
}
return responseContainer[ 0 ];
};
- // force json dataType
+ // Force json dataType
s.dataTypes[ 0 ] = "json";
// Install callback
@@ -60,16 +63,24 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
};
// Clean-up function (fires after converters)
- jqXHR.always(function() {
- // Restore preexisting value
- window[ callbackName ] = overwritten;
+ jqXHR.always( function() {
+
+ // If previous value didn't exist - remove it
+ if ( overwritten === undefined ) {
+ jQuery( window ).removeProp( callbackName );
+
+ // Otherwise restore preexisting value
+ } else {
+ window[ callbackName ] = overwritten;
+ }
// Save back as free
if ( s[ callbackName ] ) {
- // make sure that re-using the options doesn't screw things around
+
+ // Make sure that re-using the options doesn't screw things around
s.jsonpCallback = originalSettings.jsonpCallback;
- // save the callback name for future use
+ // Save the callback name for future use
oldCallbacks.push( callbackName );
}
@@ -79,11 +90,11 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
}
responseContainer = overwritten = undefined;
- });
+ } );
// Delegate to script
return "script";
}
-});
+} );
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/load.js b/js/vendor/jquery/src/ajax/load.js
index bff25b1a4..9f1599f91 100644
--- a/js/vendor/jquery/src/ajax/load.js
+++ b/js/vendor/jquery/src/ajax/load.js
@@ -1,10 +1,11 @@
-define([
+define( [
"../core",
"../core/parseHTML",
"../ajax",
"../traversing",
"../manipulation",
"../selector",
+
// Optional event/alias dependency
"../event/alias"
], function( jQuery ) {
@@ -22,9 +23,9 @@ jQuery.fn.load = function( url, params, callback ) {
var selector, type, response,
self = this,
- off = url.indexOf(" ");
+ off = url.indexOf( " " );
- if ( off >= 0 ) {
+ if ( off > -1 ) {
selector = jQuery.trim( url.slice( off ) );
url = url.slice( 0, off );
}
@@ -43,14 +44,16 @@ jQuery.fn.load = function( url, params, callback ) {
// If we have elements to modify, make the request
if ( self.length > 0 ) {
- jQuery.ajax({
+ jQuery.ajax( {
url: url,
- // if "type" variable is undefined, then "GET" method will be used
- type: type,
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
dataType: "html",
data: params
- }).done(function( responseText ) {
+ } ).done( function( responseText ) {
// Save response for use in complete callback
response = arguments;
@@ -59,17 +62,22 @@ jQuery.fn.load = function( url, params, callback ) {
// If a selector was specified, locate the right elements in a dummy div
// Exclude scripts to avoid IE 'Permission Denied' errors
- jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+ jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
// Otherwise use the full result
responseText );
- }).complete( callback && function( jqXHR, status ) {
- self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
- });
+ // If the request succeeds, this function gets "data", "status", "jqXHR"
+ // but they are ignored because response was set above.
+ // If it fails, this function gets "jqXHR", "status", "error"
+ } ).always( callback && function( jqXHR, status ) {
+ self.each( function() {
+ callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] );
+ } );
+ } );
}
return this;
};
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/parseJSON.js b/js/vendor/jquery/src/ajax/parseJSON.js
index 3a96d15b9..11918b06d 100644
--- a/js/vendor/jquery/src/ajax/parseJSON.js
+++ b/js/vendor/jquery/src/ajax/parseJSON.js
@@ -1,4 +1,4 @@
-define([
+define( [
"../core"
], function( jQuery ) {
@@ -10,4 +10,4 @@ jQuery.parseJSON = function( data ) {
return jQuery.parseJSON;
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/parseXML.js b/js/vendor/jquery/src/ajax/parseXML.js
index 9eeb625ff..6599aaf5b 100644
--- a/js/vendor/jquery/src/ajax/parseXML.js
+++ b/js/vendor/jquery/src/ajax/parseXML.js
@@ -1,18 +1,17 @@
-define([
+define( [
"../core"
], function( jQuery ) {
// Cross-browser xml parsing
jQuery.parseXML = function( data ) {
- var xml, tmp;
+ var xml;
if ( !data || typeof data !== "string" ) {
return null;
}
// Support: IE9
try {
- tmp = new DOMParser();
- xml = tmp.parseFromString( data, "text/xml" );
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
} catch ( e ) {
xml = undefined;
}
@@ -25,4 +24,4 @@ jQuery.parseXML = function( data ) {
return jQuery.parseXML;
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/script.js b/js/vendor/jquery/src/ajax/script.js
index f44329d4e..945bea9da 100644
--- a/js/vendor/jquery/src/ajax/script.js
+++ b/js/vendor/jquery/src/ajax/script.js
@@ -1,15 +1,17 @@
-define([
+define( [
"../core",
+ "../var/document",
"../ajax"
-], function( jQuery ) {
+], function( jQuery, document ) {
// Install script dataType
-jQuery.ajaxSetup({
+jQuery.ajaxSetup( {
accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ script: "text/javascript, application/javascript, " +
+ "application/ecmascript, application/x-ecmascript"
},
contents: {
- script: /(?:java|ecma)script/
+ script: /\b(?:java|ecma)script\b/
},
converters: {
"text script": function( text ) {
@@ -17,7 +19,7 @@ jQuery.ajaxSetup({
return text;
}
}
-});
+} );
// Handle cache's special case and crossDomain
jQuery.ajaxPrefilter( "script", function( s ) {
@@ -27,20 +29,20 @@ jQuery.ajaxPrefilter( "script", function( s ) {
if ( s.crossDomain ) {
s.type = "GET";
}
-});
+} );
// Bind script tag hack transport
jQuery.ajaxTransport( "script", function( s ) {
+
// This transport only deals with cross domain requests
if ( s.crossDomain ) {
var script, callback;
return {
send: function( _, complete ) {
- script = jQuery("<script>").prop({
- async: true,
+ script = jQuery( "<script>" ).prop( {
charset: s.scriptCharset,
src: s.url
- }).on(
+ } ).on(
"load error",
callback = function( evt ) {
script.remove();
@@ -50,6 +52,8 @@ jQuery.ajaxTransport( "script", function( s ) {
}
}
);
+
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
document.head.appendChild( script[ 0 ] );
},
abort: function() {
@@ -59,6 +63,6 @@ jQuery.ajaxTransport( "script", function( s ) {
}
};
}
-});
+} );
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/var/location.js b/js/vendor/jquery/src/ajax/var/location.js
new file mode 100644
index 000000000..ff9578e99
--- /dev/null
+++ b/js/vendor/jquery/src/ajax/var/location.js
@@ -0,0 +1,3 @@
+define( function() {
+ return window.location;
+} );
diff --git a/js/vendor/jquery/src/ajax/var/nonce.js b/js/vendor/jquery/src/ajax/var/nonce.js
index 0871aae88..83fd557c8 100644
--- a/js/vendor/jquery/src/ajax/var/nonce.js
+++ b/js/vendor/jquery/src/ajax/var/nonce.js
@@ -1,5 +1,5 @@
-define([
+define( [
"../../core"
], function( jQuery ) {
return jQuery.now();
-});
+} );
diff --git a/js/vendor/jquery/src/ajax/var/rquery.js b/js/vendor/jquery/src/ajax/var/rquery.js
index 500a77a08..0502146ca 100644
--- a/js/vendor/jquery/src/ajax/var/rquery.js
+++ b/js/vendor/jquery/src/ajax/var/rquery.js
@@ -1,3 +1,3 @@
-define(function() {
- return (/\?/);
-});
+define( function() {
+ return ( /\?/ );
+} );
diff --git a/js/vendor/jquery/src/ajax/xhr.js b/js/vendor/jquery/src/ajax/xhr.js
index c2b43c921..db670ff15 100644
--- a/js/vendor/jquery/src/ajax/xhr.js
+++ b/js/vendor/jquery/src/ajax/xhr.js
@@ -1,4 +1,4 @@
-define([
+define( [
"../core",
"../var/support",
"../ajax"
@@ -6,47 +6,41 @@ define([
jQuery.ajaxSettings.xhr = function() {
try {
- return new XMLHttpRequest();
- } catch( e ) {}
+ return new window.XMLHttpRequest();
+ } catch ( e ) {}
};
-var xhrId = 0,
- xhrCallbacks = {},
- xhrSuccessStatus = {
- // file protocol always yields status code 0, assume 200
+var xhrSuccessStatus = {
+
+ // File protocol always yields status code 0, assume 200
0: 200,
+
// Support: IE9
// #1450: sometimes IE returns 1223 when it should be 204
1223: 204
},
xhrSupported = jQuery.ajaxSettings.xhr();
-// Support: IE9
-// Open requests must be manually aborted on unload (#5280)
-// See https://support.microsoft.com/kb/2856746 for more info
-if ( window.attachEvent ) {
- window.attachEvent( "onunload", function() {
- for ( var key in xhrCallbacks ) {
- xhrCallbacks[ key ]();
- }
- });
-}
-
support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
support.ajax = xhrSupported = !!xhrSupported;
-jQuery.ajaxTransport(function( options ) {
- var callback;
+jQuery.ajaxTransport( function( options ) {
+ var callback, errorCallback;
// Cross domain only allowed if supported through XMLHttpRequest
if ( support.cors || xhrSupported && !options.crossDomain ) {
return {
send: function( headers, complete ) {
var i,
- xhr = options.xhr(),
- id = ++xhrId;
+ xhr = options.xhr();
- xhr.open( options.type, options.url, options.async, options.username, options.password );
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
// Apply custom fields if provided
if ( options.xhrFields ) {
@@ -65,8 +59,8 @@ jQuery.ajaxTransport(function( options ) {
// akin to a jigsaw puzzle, we simply never set it to be sure.
// (it can always be set on a per-request basis or even using ajaxSetup)
// For same-domain requests, won't change header if already provided.
- if ( !options.crossDomain && !headers["X-Requested-With"] ) {
- headers["X-Requested-With"] = "XMLHttpRequest";
+ if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
}
// Set headers
@@ -78,27 +72,38 @@ jQuery.ajaxTransport(function( options ) {
callback = function( type ) {
return function() {
if ( callback ) {
- delete xhrCallbacks[ id ];
- callback = xhr.onload = xhr.onerror = null;
+ callback = errorCallback = xhr.onload =
+ xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
if ( type === "abort" ) {
xhr.abort();
} else if ( type === "error" ) {
- complete(
- // file: protocol always yields status 0; see #8605, #14207
- xhr.status,
- xhr.statusText
- );
+
+ // Support: IE9
+ // On a manual native abort, IE9 throws
+ // errors on any property access that is not readyState
+ if ( typeof xhr.status !== "number" ) {
+ complete( 0, "error" );
+ } else {
+ complete(
+
+ // File: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
} else {
complete(
xhrSuccessStatus[ xhr.status ] || xhr.status,
xhr.statusText,
- // Support: IE9
- // Accessing binary-data responseText throws an exception
- // (#11426)
- typeof xhr.responseText === "string" ? {
- text: xhr.responseText
- } : undefined,
+
+ // Support: IE9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ ( xhr.responseType || "text" ) !== "text" ||
+ typeof xhr.responseText !== "string" ?
+ { binary: xhr.response } :
+ { text: xhr.responseText },
xhr.getAllResponseHeaders()
);
}
@@ -108,15 +113,41 @@ jQuery.ajaxTransport(function( options ) {
// Listen to events
xhr.onload = callback();
- xhr.onerror = callback("error");
+ errorCallback = xhr.onerror = callback( "error" );
+
+ // Support: IE9
+ // Use onreadystatechange to replace onabort
+ // to handle uncaught aborts
+ if ( xhr.onabort !== undefined ) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+
+ // Check readyState before timeout as it changes
+ if ( xhr.readyState === 4 ) {
+
+ // Allow onerror to be called first,
+ // but that will not handle a native abort
+ // Also, save errorCallback to a variable
+ // as xhr.onerror cannot be accessed
+ window.setTimeout( function() {
+ if ( callback ) {
+ errorCallback();
+ }
+ } );
+ }
+ };
+ }
// Create the abort callback
- callback = xhrCallbacks[ id ] = callback("abort");
+ callback = callback( "abort" );
try {
+
// Do send the request (this may raise an exception)
xhr.send( options.hasContent && options.data || null );
} catch ( e ) {
+
// #14683: Only rethrow if this hasn't been notified as an error yet
if ( callback ) {
throw e;
@@ -131,6 +162,6 @@ jQuery.ajaxTransport(function( options ) {
}
};
}
-});
+} );
-});
+} );