X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fajax%2Fajax.js;h=a0e64629477e3820cfb1fa9a50a5226ba14e4fcd;hb=a5dbcaf67579b2266b64ffbdd2a328d180f7f64b;hp=16f7d70c838f6b2c431c76d409135880632e2171;hpb=484af2a45aba1ab7955a8b3de43e875911b123a7;p=jquery.git
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js
index 16f7d70..0b965e4 100644
--- a/src/ajax/ajax.js
+++ b/src/ajax/ajax.js
@@ -1,388 +1,857 @@
-// AJAX Plugin
-// Docs Here:
-// http://jquery.com/docs/ajax/
+jQuery.fn.extend({
+
+ /**
+ * Load HTML from a remote file and inject it into the DOM, only if it's
+ * been modified by the server.
+ *
+ * @example $("#feeds").loadIfModified("feeds.html");
+ * @before
+ * @result 45 feeds found.
+ *
+ * @name loadIfModified
+ * @type jQuery
+ * @param String url The URL of the HTML file to load.
+ * @param Map params (optional) Key/value pairs that will be sent to the server.
+ * @param Function callback (optional) A function to be executed whenever the data is loaded (parameters: responseText, status and response itself).
+ * @cat Ajax
+ */
+ // DEPRECATED
+ loadIfModified: function( url, params, callback ) {
+ this.load( url, params, callback, 1 );
+ },
+
+ /**
+ * 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.
+ *
+ * @example $("#feeds").load("feeds.html",
+ * {limit: 25},
+ * function() { alert("The last 25 entries in the feed have been loaded"); }
+ * );
+ * @desc Same as above, but with an additional parameter
+ * and a callback that is executed when the data was loaded.
+ *
+ * @name load
+ * @type jQuery
+ * @param String url The URL of the HTML file to load.
+ * @param Object params (optional) A set of key/value pairs that will be sent as data to the server.
+ * @param Function callback (optional) A function to be executed whenever the data is loaded (parameters: responseText, status and response itself).
+ * @cat Ajax
+ */
+ load: function( url, params, callback, ifModified ) {
+ if ( jQuery.isFunction( url ) )
+ return this.bind("load", url);
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ callback = callback || function(){};
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ data: params,
+ ifModified: ifModified,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || !ifModified && status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/