diff --git a/src/definitions/behaviors/api.js b/src/definitions/behaviors/api.js index 557c77849..53e3df208 100644 --- a/src/definitions/behaviors/api.js +++ b/src/definitions/behaviors/api.js @@ -135,13 +135,17 @@ $.api = $.fn.api = function(parameters) { } // call beforesend and get any settings changes - requestSettings = module.get.settings(); + requestSettings = module.get.settings(); - // check if beforesend cancelled request + // check if before send cancelled request if(requestSettings === false) { + module.cancelled = true; module.error(error.beforeSend); return; } + else { + module.cancelled = false; + } if(settings.url) { // override with url if specified @@ -212,6 +216,9 @@ $.api = $.fn.api = function(parameters) { }, was: { + cancelled: function() { + return (module.cancelled || false); + }, succesful: function() { return (module.request && module.request.state() == 'resolved'); }, diff --git a/src/definitions/behaviors/state.js b/src/definitions/behaviors/state.js index b925a47e9..533b8bf1e 100644 --- a/src/definitions/behaviors/state.js +++ b/src/definitions/behaviors/state.js @@ -192,13 +192,20 @@ $.fn.state = function(parameters) { toggle: { state: function() { var - apiRequest + apiRequest, + requestCancelled ; if( module.allows('active') && module.is.enabled() ) { module.refresh(); if($.fn.api !== undefined) { - apiRequest = $module.api('get request'); - if(apiRequest) { + apiRequest = $module.api('get request'); + requestCancelled = $module.api('was cancelled'); + if( requestCancelled ) { + module.debug('API Request cancelled by beforesend'); + settings.activateTest = function(){ return false; }; + settings.deactivateTest = function(){ return false; }; + } + else if(apiRequest) { module.listenTo(apiRequest); return; } @@ -230,11 +237,6 @@ $.fn.state = function(parameters) { }) ; } - // xhr exists but set to false, beforeSend killed the xhr - else { - settings.activateTest = function(){ return false; }; - settings.deactivateTest = function(){ return false; }; - } }, // checks whether active/inactive state can be given @@ -394,7 +396,7 @@ $.fn.state = function(parameters) { } } else { - module.debug('Text is already sane, ignoring update', text); + module.debug('Text is already set, ignoring update', text); } } }, @@ -582,7 +584,7 @@ $.fn.state.settings = { name : 'State', // debug output - debug : false, + debug : true, // verbose debug output verbose : true, @@ -621,7 +623,8 @@ $.fn.state.settings = { // error error: { - method : 'The method you called is not defined.' + beforeSend : 'The before send function has cancelled state change', + method : 'The method you called is not defined.' }, // metadata