From 2b601cdcb6c165d6b3857c62b737d19f189a9e6f Mon Sep 17 00:00:00 2001 From: Alex Monk Date: Sun, 26 May 2013 19:46:04 +0100 Subject: [PATCH] mediawiki.searchSuggest: Use mw.Api instead of jQuery.ajax Change-Id: I5e12371bf7e0a6eaeb2507b8942773f63281139b --- resources/Resources.php | 1 + .../mediawiki/mediawiki.searchSuggest.js | 39 +++++++------------ 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/resources/Resources.php b/resources/Resources.php index ddcefda5c7..7361b725b9 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -668,6 +668,7 @@ return array( 'jquery.client', 'jquery.placeholder', 'jquery.suggestions', + 'mediawiki.api', ), ), 'mediawiki.Title' => array( diff --git a/resources/mediawiki/mediawiki.searchSuggest.js b/resources/mediawiki/mediawiki.searchSuggest.js index 00e74c55e5..08f10fe278 100644 --- a/resources/mediawiki/mediawiki.searchSuggest.js +++ b/resources/mediawiki/mediawiki.searchSuggest.js @@ -139,36 +139,27 @@ $( searchboxesSelectors.join(', ') ) .suggestions( { fetch: function ( query ) { - var $el, jqXhr; + var $el; if ( query.length !== 0 ) { - $el = $(this); - jqXhr = $.ajax( { - url: mw.util.wikiScript( 'api' ), - data: { - format: 'json', - action: 'opensearch', - search: query, - namespace: 0, - suggest: '' - }, - dataType: 'json', - success: function ( data ) { - if ( $.isArray( data ) && data.length ) { - $el.suggestions( 'suggestions', data[1] ); - } - } - }); - $el.data( 'request', jqXhr ); + $el = $( this ); + $el.data( 'request', ( new mw.Api() ).get( { + action: 'opensearch', + search: query, + namespace: 0, + suggest: '' + } ).done( function ( data ) { + $el.suggestions( 'suggestions', data[1] ); + } ) ); } }, cancel: function () { - var jqXhr = $(this).data( 'request' ); + var apiPromise = $( this ).data( 'request' ); // If the delay setting has caused the fetch to have not even happened - // yet, the jqXHR object will have never been set. - if ( jqXhr && $.isFunction( jqXhr.abort ) ) { - jqXhr.abort(); - $(this).removeData( 'request' ); + // yet, the apiPromise object will have never been set. + if ( apiPromise && $.isFunction( apiPromise.abort ) ) { + apiPromise.abort(); + $( this ).removeData( 'request' ); } }, result: { -- 2.20.1