X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fajax%2Fajax.js;h=e37632f540924e479d0be776bb79ff237ce473e4;hb=0ae7198b9e1614be54eecb5bb0272094996397d9;hp=9d4e8b512862d21d10cbff4d3a26fd3a70878401;hpb=6b8ffe79f4e616d6179f6b16099e7c25e7ae5cb1;p=jquery.git
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js
index 9d4e8b5..e37632f 100644
--- a/src/ajax/ajax.js
+++ b/src/ajax/ajax.js
@@ -22,6 +22,9 @@ jQuery.fn.extend({
/**
* Load HTML from a remote file and inject it into the DOM.
*
+ * Note: Avoid to use this to load scripts, instead use $.getScript.
+ * IE strips script tags when there aren't any other characters in front of it.
+ *
* @example $("#feeds").load("feeds.html");
* @before
* @result 45 feeds found.
@@ -405,7 +408,7 @@ jQuery.extend({
},
// timeout (ms)
- timeout: 0,
+ //timeout: 0,
/**
* Set the timeout of all AJAX requests to a specific amount of time.
@@ -417,6 +420,8 @@ jQuery.extend({
* 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.
*
@@ -426,9 +431,40 @@ jQuery.extend({
* @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: {},
@@ -473,7 +509,7 @@ jQuery.extend({
* 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
@@ -553,22 +589,7 @@ jQuery.extend({
*/
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 ) {
@@ -645,6 +666,8 @@ jQuery.extend({
// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+ } else {
+ jQuery.handleError(s, xml, status);
}
} catch(e) {
status = "error";
@@ -673,14 +696,12 @@ jQuery.extend({
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);
@@ -694,6 +715,10 @@ jQuery.extend({
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;
},
@@ -712,18 +737,24 @@ jQuery.extend({
// 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.