我有以下功能:
function loadProjects(pID) {
$.ajax({
url: myURL,
success: function (dataJS) {###Run any supplied call back here####}
});
}
我将此函数称为loadProjects(1);
问题是我希望能够在成功后定义一个callBack函数,并且我想在loadProjects(1,pong(12))时包含它。我希望能够为回调提供参数。
如何让函数接受回调? 如何将回调传递给该函数?
像
这样的东西function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {###Run any supplied call back here####}
});
}
然后我可以致电:
loadProjects(22, pong(12))
问题是当我尝试这个时,pong(12)立即运行,而不是稍后在loadProjects函数中调用时?
想法?感谢
答案 0 :(得分:7)
试试这个:
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
if ($.isFunction(callback))
callback();
}
});
}
loadProjects(1, function() { pong(12); });
或:
function loadProjects(pID, callback, value) {
$.ajax({
url: myURL,
success: function (dataJS) {
if ($.isFunction(callback)) {
if (value) {
callback(value);
}else{
callback();
}
}
}
});
}
loadProjects(1, pong, 12);
答案 1 :(得分:2)
loadProjects(22, function(){pong(12);});
答案 2 :(得分:0)
尝试这样的事情:
var loadProjects = (function(pID, callback) {
var params = { "property" : "value" }
$.ajax({
url: myURL,
success: function (dataJS) { callback(params); }
});
})
loadProjects(22, function(p){ console.log(p); });
答案 3 :(得分:0)
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');
12,foo和bar都传递给pong回调。