Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery可以选择添加回调_Javascript_Jquery - Fatal编程技术网

Javascript Jquery可以选择添加回调

Javascript Jquery可以选择添加回调,javascript,jquery,Javascript,Jquery,我正在尝试编写一个可重用的Jquery表单函数。我需要它根据是否在页面上定义回调函数来选择性地分配回调函数 这个例子是我使用的成功,但会为所有人做 在主JS文件上: function gJs_AjaxCustomSubmit(ObjectContext) { var AS=''; if (typeof AjaxSuccess == 'function') { AS = 'AjaxSuccess' } $('#frm').ajaxSubmit({ su

我正在尝试编写一个可重用的Jquery表单函数。我需要它根据是否在页面上定义回调函数来选择性地分配回调函数

这个例子是我使用的成功,但会为所有人做

在主JS文件上:

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});