/**
* Load HTML from a remote file and inject it into the DOM.
*
+ * Note: Avoid to use this to load scripts, instead use $.getScript.
+ *
* @example $("#feeds").load("feeds.html");
* @before <div id="feeds"></div>
* @result <div id="feeds"><b>45</b> feeds found.</div>
},
// timeout (ms)
- timeout: 0,
+ //timeout: 0,
/**
* Set the timeout of all AJAX requests to a specific amount of time.
* You can manually abort requests with the XMLHttpRequest's (returned by
* all ajax functions) abort() method.
*
+ * Deprecated. Use $.ajaxSetup instead.
+ *
* @example $.ajaxTimeout( 5000 );
* @desc Make all AJAX requests timeout after 5 seconds.
*
* @cat AJAX
*/
ajaxTimeout: function(timeout) {
- jQuery.timeout = timeout;
+ jQuery.ajaxSettings.timeout = timeout;
+ },
+
+ /**
+ * Setup global settings for AJAX requests.
+ *
+ * See $.ajax for a description of all available options.
+ *
+ * @example $.ajaxSetup( {
+ * url: "/xmlhttp/",
+ * global: false,
+ * type: "POST"
+ * } );
+ * @desc Sets the defaults for AJAX requests to the url "/xmlhttp/",
+ * disables global handlers and uses POST instead of GET
+ *
+ * @name $.ajaxSetup
+ * @type undefined
+ * @param Object settings Key/value pairs for ajax options
+ * @cat AJAX
+ */
+ ajaxSetup: function(settings) {
+ jQuery.extend(jQuery.ajaxSettings, settings);
},
+ ajaxSettings: {
+ global: true,
+ type: "GET",
+ timeout: 0,
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true
+ },
+
// Last-Modified header cache for next request
lastModified: {},
* Last-Modified header. Default value is false, ignoring the header.
*
* (Number) timeout - Local timeout to override global timeout, eg. to give a
- * single request a longer timeout while all others timeout after 1 seconds.
+ * single request a longer timeout while all others timeout after 1 second.
* See $.ajaxTimeout() for global timeouts.
*
* (Boolean) global - Whether to trigger global AJAX event handlers for
*/
ajax: function( s ) {
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
- s = jQuery.extend({
- global: true,
- ifModified: false,
- type: "GET",
- timeout: jQuery.timeout,
- complete: null,
- success: null,
- error: null,
- dataType: null,
- url: null,
- data: null,
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- beforeSend: null
- }, s);
+ s = jQuery.extend({}, jQuery.ajaxSettings, s);
// if data available
if ( s.data ) {
// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+ } else {
+ jQuery.handleError(s, xml, status);
}
} catch(e) {
status = "error";
if(s.timeout > 0)
setTimeout(function(){
// Check to see if the request is still happening
- if (xml) {
+ if(xml) {
// Cancel the request
xml.abort();
- if ( !requestDone ) onreadystatechange( "timeout" );
-
- // Clear from memory
- xml = null;
+ if( !requestDone )
+ onreadystatechange( "timeout" );
}
}, s.timeout);
jQuery.handleError(s, xml, null, e);
}
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if(!s.async)
+ onreadystatechange();
+
// return XMLHttpRequest to allow aborting the request etc.
return xml2;
},
// Determines if an XMLHttpRequest was successful or not
httpSuccess: function(r) {
- return !r.status && location.protocol == "file:" ||
- ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
- jQuery.browser.safari && r.status == undefined;
+ try {
+ return !r.status && location.protocol == "file:" ||
+ ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
+ jQuery.browser.safari && r.status == undefined;
+ } catch(e){}
+ return false;
},
// Determines if an XMLHttpRequest returns NotModified
httpNotModified: function(xml, url) {
- var xmlRes = xml.getResponseHeader("Last-Modified");
+ try {
+ var xmlRes = xml.getResponseHeader("Last-Modified");
- // Firefox always returns 200. check Last-Modified date
- return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
- jQuery.browser.safari && xml.status == undefined;
+ // Firefox always returns 200. check Last-Modified date
+ return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
+ jQuery.browser.safari && xml.status == undefined;
+ } catch(e){}
+ return false;
},
/* Get the data out of an XMLHttpRequest.