From 496b7d757b12b1a8b26d735e7f45795f5fb64c79 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Wed, 26 Jun 2013 16:27:52 -0400 Subject: [PATCH] Simplify OpenSeadragon.makeAjaxRequest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Since async is always true – and browsers are starting to deprecate synchronous XHR – we were able to prune considerable amount of code * Add an error callback to match the existing success callback --- src/openseadragon.js | 59 +++++++++++++------------------------------- 1 file changed, 17 insertions(+), 42 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 87e15e03..905259a9 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1306,64 +1306,39 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ * @function * @name OpenSeadragon.makeAjaxRequest * @param {String} url - the url to request - * @param {Function} [callback] - a function to call when complete + * @param {Function} onSuccess - a function to call on a successful response + * @param {Function} onError - a function to call on when an error occurs * @throws {Error} */ - makeAjaxRequest: function( url, callback ) { + makeAjaxRequest: function( url, onSuccess, onError ) { + var request = $.createAjaxRequest(); - var async = true, - request = $.createAjaxRequest(), - options; + request.onreadystatechange = function() { + // 4 = DONE (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) + if ( request.readyState == 4) { + request.onreadystatechange = function(){}; - - if( $.isPlainObject( url ) ){ - options.async = options.async || async; - }else{ - options = { - url: url, - async: $.isFunction( callback ), - success: callback, - error: null - }; - } - - if ( options.async ) { - /** @ignore */ - request.onreadystatechange = function() { - // 4 = DONE (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) - if ( request.readyState == 4) { - request.onreadystatechange = function(){}; - options.success( request ); + if (request.status == 200) { + onSuccess( request ); + } else { + onError( request ); } - }; - } + } + }; try { - request.open( "GET", options.url, options.async ); + request.open( "GET", url, true ); request.send( null ); } catch (e) { - $.console.log( - "%s while making AJAX request: %s", - e.name, - e.message - ); + $.console.log("%s while making AJAX request: %s", e.name, e.message); request.onreadystatechange = function(){}; request = null; - if ( options.error && $.isFunction( options.error ) ) { - options.error( request ); - } + onError(request, e); } - - if( !options.async && $.isFunction( options.success ) ){ - options.success( request ); - } - - return options.async ? null : request; }, - /** * Taken from jQuery 1.6.1 * @function