From c8ca3c23049e2236923d8cbb8e52250907fbf6a8 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Fri, 8 May 2015 19:15:34 +0000 Subject: [PATCH] When fetching in `media/views/embed/link.js`, call `abort()` on any existing XHRs. Use `$.ajax` instead of `wp.ajax.send()` to allow this. Pass `this` as `context` to the options to remove the need to bind callbacks. Fixes #32035. git-svn-id: https://develop.svn.wordpress.org/trunk@32460 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/js/media-views.js | 25 ++++++++++++++------ src/wp-includes/js/media/views/embed/link.js | 25 ++++++++++++++------ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/wp-includes/js/media-views.js b/src/wp-includes/js/media-views.js index 85991ebd15..602d5a8957 100644 --- a/src/wp-includes/js/media-views.js +++ b/src/wp-includes/js/media-views.js @@ -4561,28 +4561,39 @@ EmbedLink = wp.media.view.Settings.extend({ return; } + if ( this.dfd && 'pending' === this.dfd.state() ) { + this.dfd.abort(); + } + embed = new wp.shortcode({ tag: 'embed', attrs: _.pick( this.model.attributes, [ 'width', 'height', 'src' ] ), content: this.model.get('url') }); - wp.ajax.send( 'parse-embed', { - data : { + this.dfd = $.ajax({ + type: 'POST', + url: wp.ajax.settings.url, + context: this, + data: { + action: 'parse-embed', post_ID: wp.media.view.settings.post.id, shortcode: embed.string() } - } ) - .done( _.bind( this.renderoEmbed, this ) ) - .fail( _.bind( this.renderFail, this ) ); + }) + .done( this.renderoEmbed ) + .fail( this.renderFail ); }, - renderFail: function () { + renderFail: function ( response, status ) { + if ( 'abort' === status ) { + return; + } this.$( '.link-text' ).show(); }, renderoEmbed: function( response ) { - var html = ( response && response.body ) || ''; + var html = ( response && response.data && response.data.body ) || ''; if ( html ) { this.$('.embed-container').show().find('.embed-preview').html( html ); diff --git a/src/wp-includes/js/media/views/embed/link.js b/src/wp-includes/js/media/views/embed/link.js index f2d01f69ed..d96c0d0e6d 100644 --- a/src/wp-includes/js/media/views/embed/link.js +++ b/src/wp-includes/js/media/views/embed/link.js @@ -45,28 +45,39 @@ EmbedLink = wp.media.view.Settings.extend({ return; } + if ( this.dfd && 'pending' === this.dfd.state() ) { + this.dfd.abort(); + } + embed = new wp.shortcode({ tag: 'embed', attrs: _.pick( this.model.attributes, [ 'width', 'height', 'src' ] ), content: this.model.get('url') }); - wp.ajax.send( 'parse-embed', { - data : { + this.dfd = $.ajax({ + type: 'POST', + url: wp.ajax.settings.url, + context: this, + data: { + action: 'parse-embed', post_ID: wp.media.view.settings.post.id, shortcode: embed.string() } - } ) - .done( _.bind( this.renderoEmbed, this ) ) - .fail( _.bind( this.renderFail, this ) ); + }) + .done( this.renderoEmbed ) + .fail( this.renderFail ); }, - renderFail: function () { + renderFail: function ( response, status ) { + if ( 'abort' === status ) { + return; + } this.$( '.link-text' ).show(); }, renderoEmbed: function( response ) { - var html = ( response && response.body ) || ''; + var html = ( response && response.data && response.data.body ) || ''; if ( html ) { this.$('.embed-container').show().find('.embed-preview').html( html );