]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/wp-util.js
WordPress 4.3
[autoinstalls/wordpress.git] / wp-includes / js / wp-util.js
index 1985b35e6fdb29c2675b4c343fa51f0e44580b3f..84cb5510bbdece7103385d6bb98b3498bc4fbb49 100644 (file)
@@ -50,7 +50,8 @@ window.wp = window.wp || {};
                 *
                 * @param  {string} action The slug of the action to fire in WordPress.
                 * @param  {object} data   The data to populate $_POST with.
-                * @return {$.promise}     A jQuery promise that represents the request.
+                * @return {$.promise}     A jQuery promise that represents the request,
+                *                         decorated with an abort() method.
                 */
                post: function( action, data ) {
                        return wp.ajax.send({
@@ -65,9 +66,11 @@ window.wp = window.wp || {};
                 *
                 * @param  {string} action  The slug of the action to fire in WordPress.
                 * @param  {object} options The options passed to jQuery.ajax.
-                * @return {$.promise}      A jQuery promise that represents the request.
+                * @return {$.promise}      A jQuery promise that represents the request,
+                *                          decorated with an abort() method.
                 */
                send: function( action, options ) {
+                       var promise, deferred;
                        if ( _.isObject( action ) ) {
                                options = action;
                        } else {
@@ -81,7 +84,7 @@ window.wp = window.wp || {};
                                context: this
                        });
 
-                       return $.Deferred( function( deferred ) {
+                       deferred = $.Deferred( function( deferred ) {
                                // Transfer success/error callbacks.
                                if ( options.success )
                                        deferred.done( options.success );
@@ -92,7 +95,7 @@ window.wp = window.wp || {};
                                delete options.error;
 
                                // Use with PHP's wp_send_json_success() and wp_send_json_error()
-                               $.ajax( options ).done( function( response ) {
+                               deferred.jqXHR = $.ajax( options ).done( function( response ) {
                                        // Treat a response of `1` as successful for backwards
                                        // compatibility with existing handlers.
                                        if ( response === '1' || response === 1 )
@@ -105,7 +108,15 @@ window.wp = window.wp || {};
                                }).fail( function() {
                                        deferred.rejectWith( this, arguments );
                                });
-                       }).promise();
+                       });
+
+                       promise = deferred.promise();
+                       promise.abort = function() {
+                               deferred.jqXHR.abort();
+                               return this;
+                       };
+
+                       return promise;
                }
        };