Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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,我有以下功能: function loadProjects(pID) { $.ajax({ url: myURL, success: function (dataJS) {###Run any supplied call back here####} }); } 我像loadProjects1一样调用这个函数 问题是我希望能够在成功后定义回调函数,并且我希望在加载projects1、pong12时包含它。我希望能够向回调提供参数 如何让函数接受

我有以下功能:

function loadProjects(pID) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {###Run any supplied call back here####}
    });
}
我像loadProjects1一样调用这个函数

问题是我希望能够在成功后定义回调函数,并且我希望在加载projects1、pong12时包含它。我希望能够向回调提供参数

如何让函数接受回调? 如何将回调传递给该函数

差不多

function loadProjects(pID, callback) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {###Run any supplied call back here####}
    });
}
然后我可以打电话:

loadProjects(22, pong(12))
问题是,当我尝试此操作时,pong12会立即运行,而不是稍后在loadProjects函数中调用时运行

想法?谢谢

试试这个:

function loadProjects(pID, callback) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {
           if ($.isFunction(callback))
              callback();
        }
    });

}

loadProjects(1, function() { pong(12); });
或:


试着这样做:

var loadProjects = (function(pID, callback) {
    var params = { "property" : "value" }
    $.ajax({
       url: myURL,
       success: function (dataJS) { callback(params); }
    });
})

loadProjects(22, function(p){ console.log(p); });
用法示例:

loadProjects(22, pong, 12);
loadProjects(22, pong, 12, 'foo', 'bar');

12、foo和bar都传递给pong回调。

太棒了。非常感谢。我会接受一次所以让我。再过5分钟,$.isFunction的grrr+1比typeof foo=='function'@karim79更漂亮,后者在WebKit中也失败了。。。typeof/regex/='function':P如果不使用jQuery,我就使用callback instanceof function。@如果需要做更复杂的事情,请查看此链接:@alex-+1关于webkit的事情,我不知道。
var loadProjects = (function(pID, callback) {
    var params = { "property" : "value" }
    $.ajax({
       url: myURL,
       success: function (dataJS) { callback(params); }
    });
})

loadProjects(22, function(p){ console.log(p); });
function loadProjects(pID, callback) {
    var callbackArgs = arguments;
    callbackArgs.shift();
    callbackArgs.shift();

    $.ajax({
        url: myURL,
        success: function (dataJS) {
            // Null or this can be used depending on desired behavaiour
            // See https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
            callback.apply(null, callbackArgs);
        }
   });
}
loadProjects(22, pong, 12);
loadProjects(22, pong, 12, 'foo', 'bar');