Fix: Disabled global AJAX events (#4282)

Credit to @VoroninWD.
This commit is contained in:
Alexander Voronin 2019-07-14 23:41:35 +03:00 committed by Denis Denisov
parent 94a71ff3da
commit f4240d7e2c
3 changed files with 10 additions and 7 deletions

View File

@ -24,7 +24,7 @@ if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.a
delete data[inputName]} delete data[inputName]}
$.each(data,function(key){requestData.append(key,this)})} $.each(data,function(key){requestData.append(key,this)})}
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')} else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
var requestOptions={url:url,crossDomain:false,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
var _event=jQuery.Event('ajaxBeforeUpdate') var _event=jQuery.Event('ajaxBeforeUpdate')
$triggerEl.trigger(_event,[context,data,textStatus,jqXHR]) $triggerEl.trigger(_event,[context,data,textStatus,jqXHR])
@ -92,7 +92,7 @@ $el.trigger('ajaxPromise',[context])
return $.ajax(requestOptions).fail(function(jqXHR,textStatus,errorThrown){if(!isRedirect){$el.trigger('ajaxFail',[context,textStatus,jqXHR])} return $.ajax(requestOptions).fail(function(jqXHR,textStatus,errorThrown){if(!isRedirect){$el.trigger('ajaxFail',[context,textStatus,jqXHR])}
if(loading)loading.hide()}).done(function(data,textStatus,jqXHR){if(!isRedirect){$el.trigger('ajaxDone',[context,data,textStatus,jqXHR])} if(loading)loading.hide()}).done(function(data,textStatus,jqXHR){if(!isRedirect){$el.trigger('ajaxDone',[context,data,textStatus,jqXHR])}
if(loading)loading.hide()}).always(function(dataOrXhr,textStatus,xhrOrError){$el.trigger('ajaxAlways',[context,dataOrXhr,textStatus,xhrOrError])})} if(loading)loading.hide()}).always(function(dataOrXhr,textStatus,xhrOrError){$el.trigger('ajaxAlways',[context,dataOrXhr,textStatus,xhrOrError])})}
Request.DEFAULTS={update:{},type:'POST',beforeUpdate:function(data,textStatus,jqXHR){},evalBeforeUpdate:null,evalSuccess:null,evalError:null,evalComplete:null} Request.DEFAULTS={update:{},type:'POST',beforeUpdate:function(data,textStatus,jqXHR){},evalBeforeUpdate:null,evalSuccess:null,evalError:null,evalComplete:null,ajaxGlobal:false}
Request.prototype.extractPartials=function(update){var result=[] Request.prototype.extractPartials=function(update){var result=[]
for(var partial in update) for(var partial in update)
result.push(partial) result.push(partial)
@ -100,7 +100,7 @@ return result.join('&')}
var old=$.fn.request var old=$.fn.request
$.fn.request=function(handler,option){var args=arguments $.fn.request=function(handler,option){var args=arguments
var $this=$(this).first() var $this=$(this).first()
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))} var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
if(!handler)handler=$this.data('request') if(!handler)handler=$this.data('request')
var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option) var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option)
return new Request($this,handler,options)} return new Request($this,handler,options)}

View File

@ -24,7 +24,7 @@ if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.a
delete data[inputName]} delete data[inputName]}
$.each(data,function(key){requestData.append(key,this)})} $.each(data,function(key){requestData.append(key,this)})}
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')} else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
var requestOptions={url:url,crossDomain:false,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
var _event=jQuery.Event('ajaxBeforeUpdate') var _event=jQuery.Event('ajaxBeforeUpdate')
$triggerEl.trigger(_event,[context,data,textStatus,jqXHR]) $triggerEl.trigger(_event,[context,data,textStatus,jqXHR])
@ -92,7 +92,7 @@ $el.trigger('ajaxPromise',[context])
return $.ajax(requestOptions).fail(function(jqXHR,textStatus,errorThrown){if(!isRedirect){$el.trigger('ajaxFail',[context,textStatus,jqXHR])} return $.ajax(requestOptions).fail(function(jqXHR,textStatus,errorThrown){if(!isRedirect){$el.trigger('ajaxFail',[context,textStatus,jqXHR])}
if(loading)loading.hide()}).done(function(data,textStatus,jqXHR){if(!isRedirect){$el.trigger('ajaxDone',[context,data,textStatus,jqXHR])} if(loading)loading.hide()}).done(function(data,textStatus,jqXHR){if(!isRedirect){$el.trigger('ajaxDone',[context,data,textStatus,jqXHR])}
if(loading)loading.hide()}).always(function(dataOrXhr,textStatus,xhrOrError){$el.trigger('ajaxAlways',[context,dataOrXhr,textStatus,xhrOrError])})} if(loading)loading.hide()}).always(function(dataOrXhr,textStatus,xhrOrError){$el.trigger('ajaxAlways',[context,dataOrXhr,textStatus,xhrOrError])})}
Request.DEFAULTS={update:{},type:'POST',beforeUpdate:function(data,textStatus,jqXHR){},evalBeforeUpdate:null,evalSuccess:null,evalError:null,evalComplete:null} Request.DEFAULTS={update:{},type:'POST',beforeUpdate:function(data,textStatus,jqXHR){},evalBeforeUpdate:null,evalSuccess:null,evalError:null,evalComplete:null,ajaxGlobal:false}
Request.prototype.extractPartials=function(update){var result=[] Request.prototype.extractPartials=function(update){var result=[]
for(var partial in update) for(var partial in update)
result.push(partial) result.push(partial)
@ -100,7 +100,7 @@ return result.join('&')}
var old=$.fn.request var old=$.fn.request
$.fn.request=function(handler,option){var args=arguments $.fn.request=function(handler,option){var args=arguments
var $this=$(this).first() var $this=$(this).first()
var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))} var data={evalBeforeUpdate:$this.data('request-before-update'),evalSuccess:$this.data('request-success'),evalError:$this.data('request-error'),evalComplete:$this.data('request-complete'),ajaxGlobal:$this.data('request-ajax-global'),confirm:$this.data('request-confirm'),redirect:$this.data('request-redirect'),loading:$this.data('request-loading'),flash:$this.data('request-flash'),files:$this.data('request-files'),form:$this.data('request-form'),url:$this.data('request-url'),update:paramToObj('data-request-update',$this.data('request-update')),data:paramToObj('data-request-data',$this.data('request-data'))}
if(!handler)handler=$this.data('request') if(!handler)handler=$this.data('request')
var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option) var options=$.extend(true,{},Request.DEFAULTS,data,typeof option=='object'&&option)
return new Request($this,handler,options)} return new Request($this,handler,options)}

View File

@ -115,6 +115,7 @@ if (window.jQuery.request !== undefined) {
var requestOptions = { var requestOptions = {
url: url, url: url,
crossDomain: false, crossDomain: false,
global: options.ajaxGlobal,
context: context, context: context,
headers: requestHeaders, headers: requestHeaders,
success: function(data, textStatus, jqXHR) { success: function(data, textStatus, jqXHR) {
@ -389,7 +390,8 @@ if (window.jQuery.request !== undefined) {
evalBeforeUpdate: null, evalBeforeUpdate: null,
evalSuccess: null, evalSuccess: null,
evalError: null, evalError: null,
evalComplete: null evalComplete: null,
ajaxGlobal: false
} }
/* /*
@ -418,6 +420,7 @@ if (window.jQuery.request !== undefined) {
evalSuccess: $this.data('request-success'), evalSuccess: $this.data('request-success'),
evalError: $this.data('request-error'), evalError: $this.data('request-error'),
evalComplete: $this.data('request-complete'), evalComplete: $this.data('request-complete'),
ajaxGlobal: $this.data('request-ajax-global'),
confirm: $this.data('request-confirm'), confirm: $this.data('request-confirm'),
redirect: $this.data('request-redirect'), redirect: $this.data('request-redirect'),
loading: $this.data('request-loading'), loading: $this.data('request-loading'),