Added a test case for "purple include", fixed a bug.
[jquery.git] / src / ajax / ajax.js
index 6c08391..ccf4f14 100644 (file)
@@ -15,6 +15,7 @@ jQuery.fn.extend({
         * @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 );
        },
@@ -47,6 +48,12 @@ jQuery.fn.extend({
                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
@@ -77,7 +84,19 @@ jQuery.fn.extend({
                        complete: function(res, status){
                                // If successful, inject the HTML into all the matched elements
                                if ( status == "success" || !ifModified && status == "notmodified" )
-                                       self.html(res.responseText);
+                                       // See if a selector was specified
+                                       self.html( selector ?
+                                               // Create a dummy div to hold the results
+                                               jQuery("<div/>")
+                                                       // inject the contents of the document in, removing the scripts
+                                                       // to avoid any 'Permission Denied' errors in IE
+                                                       .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+                                                       // Locate the specified elements
+                                                       .find(selector) :
+
+                                               // If not, just inject the full result
+                                               res.responseText );
 
                                // Add delay to account for Safari's delay in globalEval
                                setTimeout(function(){
@@ -109,7 +128,12 @@ jQuery.fn.extend({
         */
        serialize: function() {
                return jQuery.param( this );
-       }
+       },
+
+       // DEPRECATED
+       // This method no longer does anything - all script evaluation is
+       // taken care of within the HTML injection methods.
+       evalScripts: function(){}
 
 });
 
@@ -297,6 +321,7 @@ jQuery.extend({
         * @param Function callback (optional) A function to be executed whenever the data is loaded successfully.
         * @cat Ajax
         */
+       // DEPRECATED
        getIfModified: function( url, data, callback, type ) {
                return jQuery.get(url, data, callback, type, 1);
        },
@@ -409,6 +434,7 @@ jQuery.extend({
         * @param Number time How long before an AJAX request times out, in milliseconds.
         * @cat Ajax
         */
+       // DEPRECATED
        ajaxTimeout: function( timeout ) {
                jQuery.ajaxSettings.timeout = timeout;
        },