diff --git a/src/definitions/behaviors/api.js b/src/definitions/behaviors/api.js index 30e686643..210bb32d8 100644 --- a/src/definitions/behaviors/api.js +++ b/src/definitions/behaviors/api.js @@ -288,7 +288,10 @@ $.api = $.fn.api = function(parameters) { return $module.is('input'); }, loading: function() { - return (module.request && module.request.state() == 'pending'); + return (module.request) + ? (module.request.state() == 'pending') + : false + ; }, abortedRequest: function(xhr) { if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) { @@ -554,11 +557,12 @@ $.api = $.fn.api = function(parameters) { if(status == 'aborted') { module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage); settings.onAbort.call(context, status, $module, xhr); + return true; } else if(status == 'invalid') { module.debug('JSON did not pass success test. A server-side error has most likely occurred', response); } - else if(status == 'error') { + else if(status == 'error') { if(xhr !== undefined) { module.debug('XHR produced a server error', status, httpMessage); // make sure we have an error to display to console diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js index 6df6c3653..db90b0efd 100644 --- a/src/definitions/modules/search.js +++ b/src/definitions/modules/search.js @@ -286,18 +286,31 @@ $.fn.search = function(parameters) { }, setup: { - api: function() { + api: function(searchTerm) { var apiSettings = { - debug : settings.debug, - on : false, - cache : 'local', - action : 'search', - onError : module.error + debug : false, + on : false, + cache : true, + interruptRequests : true, + action : 'search', + urlData : { + query : searchTerm + }, + onSuccess : function(response) { + module.parse.response.call(element, response, searchTerm); + }, + onAbort : function(response) { + }, + onFailure : function() { + module.displayMessage(error.serverError); + }, + onError : module.error }, searchHTML ; - module.verbose('First request, initializing API'); + $.extend(true, apiSettings, settings.apiSettings); + module.verbose('Setuping up API request', apiSettings); $module.api(apiSettings); } }, @@ -489,27 +502,11 @@ $.fn.search = function(parameters) { }); }, remote: function(searchTerm) { - var - apiSettings = { - onSuccess : function(response) { - module.parse.response.call(element, response, searchTerm); - }, - onFailure: function() { - module.displayMessage(error.serverError); - }, - urlData: { - query: searchTerm - } - } - ; - if( !$module.api('get request') ) { - module.setup.api(); + if($module.api('is loading')) { + $module.api('abort'); } - $.extend(true, apiSettings, settings.apiSettings); - module.debug('Executing search', apiSettings); - module.cancel.query(); + module.setup.api(searchTerm); $module - .api('setting', apiSettings) .api('query') ; },