Javascript Jquery可以选择添加回调
我正在尝试编写一个可重用的Jquery表单函数。我需要它根据是否在页面上定义回调函数来选择性地分配回调函数 这个例子是我使用的成功,但会为所有人做 在主JS文件上:Javascript Jquery可以选择添加回调,javascript,jquery,Javascript,Jquery,我正在尝试编写一个可重用的Jquery表单函数。我需要它根据是否在页面上定义回调函数来选择性地分配回调函数 这个例子是我使用的成功,但会为所有人做 在主JS文件上: function gJs_AjaxCustomSubmit(ObjectContext) { var AS=''; if (typeof AjaxSuccess == 'function') { AS = 'AjaxSuccess' } $('#frm').ajaxSubmit({ su
function gJs_AjaxCustomSubmit(ObjectContext) {
var AS='';
if (typeof AjaxSuccess == 'function') { AS = 'AjaxSuccess' }
$('#frm').ajaxSubmit({
success: AS, //callback functions
});
}
function AjaxSuccess(response) {
alert(response);
}
在页面上,如果存在AjaxSuccess函数,那么它将在成功回调上执行。如果它不存在,就不会有错误
在普通页面上:
function gJs_AjaxCustomSubmit(ObjectContext) {
var AS='';
if (typeof AjaxSuccess == 'function') { AS = 'AjaxSuccess' }
$('#frm').ajaxSubmit({
success: AS, //callback functions
});
}
function AjaxSuccess(response) {
alert(response);
}
我希望能够像这样定义我的全局JS上的所有函数,然后如果需要,我可以将实际函数添加到我的页面中,它们将运行
function gJs_AjaxCustomSubmit(ObjectContext) {
var AStart='';
if (typeof AjaxStart == 'function') { AS = 'AjaxStart' }
var ASuccess='';
if (typeof AjaxSuccess == 'function') { AS = 'AjaxSuccess' }
var ABSend='';
if (typeof AjaxBeforeSend== 'function') { AS = 'AjaxBeforeSend' }
var AComplete='';
if (typeof AjaxComplete== 'function') { AS = 'AjaxSuccess' }
var ASt='';
if (typeof AjaxStop== 'function') { AS = 'AjaxStop' }
var AError='';
if (typeof AjaxError== 'function') { AS = 'AjaxError' }
$('#frm').attr("action", $(ObjectContext).data('path'));
$('#frm').ajaxSubmit({
dataType: 'html',
start: AStart, //callback functions
send: ABSend, //callback functions
complete: AComplete, //callback functions
stop: AjaxStop,
success: ASuccess, //callback functions
error: AError, //callback functions
});
}
这里是一个干净的可重用函数,它返回所需函数(如果存在)或空函数(如果不存在)
$('#frm').ajaxSubmit({
start: getFunction('AStart'),
send: getFunction('ABSend'),
complete: getFunction('AComplete'),
//... //callback functions
});
function getFunction(name){
if (typeof window[name] == 'function'){
return window[name];
}
return function(){}; // or null/false
}
如果按名称作为参数传递的函数不存在,将返回一个空回调,该回调不会执行任何操作,也不会引发任何错误。我最终使用了这个函数
function gJs_AjaxCustomSubmit(ObjectContext) {
//Add function to your page if needed
//AjaxStart
//AjaxBeforeSend
//AjaxComplete
//AjaxSuccess
//AjaxStop
//AjaxError
var DataType = 'html', AStart = '', ASuccess = '', ABSend = '', AComplete = '', AStop = '', AError = '';
if ($(ObjectContext).data('type')) {
DataType = $(ObjectContext).data('type');
}
if (typeof AjaxStart == 'function') { AStart = AjaxStart }
if (typeof AjaxBeforeSend == 'function') { ABSend = AjaxBeforeSend }
if (typeof AjaxComplete == 'function') { AComplete = AjaxComplete }
if (typeof AjaxSuccess == 'function') { ASuccess = AjaxSuccess }
if (typeof AjaxStop == 'function') { AStop = AjaxStop }
if (typeof AjaxError == 'function') { AError = AjaxError }
$('#frm').attr("action", $(ObjectContext).data('path'));
$('#frm').ajaxSubmit({
dataType: 'html',
start: AStart, //callback functions
send: ABSend, //callback functions
complete: AComplete, //callback functions
stop: AStop,
success: ASuccess, //callback functions
error: AError, //callback functions
});
}
您能否更具体地说明gJs_AjaxCustomSubmit做什么/应该做什么?如何调用成功回调以及在何处调用成功回调?可能您希望将
var编写为=null代码>和如果(AjaxSuccess=='function'){AS=AjaxSuccess}
?只需尝试AS=AjaxSuccess
而不是AS='AjaxSuccess'
。毕竟,你想调用一个函数而不是字符串。我认为这不是处理这个问题的好方法——为什么不把回调作为函数参数来处理呢<代码>函数gJs_AjaxCustomSubmit(ObjectContext,Callback){…$('#frm').ajaxSubmit({success:Callback});