Browse Source

Fixes issue #2779 - Search component uses 'settings', instead of init. Causing Callbacks to be set on LAST request on new request

pull/3792/head
Jack Lukic 9 years ago
parent
commit
803b8948a8
2 changed files with 29 additions and 28 deletions
  1. 8
      src/definitions/behaviors/api.js
  2. 49
      src/definitions/modules/search.js

8
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

49
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')
;
},

Loading…
Cancel
Save