我有以下功能:
function loadProjects(pID) {
$.ajax({
url: myURL,
success: function (dataJS) {XXXXXXXXXXXXXXXX}
});
}
我将此函数称为loadProjects(1);
问题是我希望能够在成功之后定义一个callBack函数,并且我想在我执行loadProjects时包含它(1,回调:{此处包含的js在成功后被回调}}
如何让函数接受回调? 如何将回调传递给该函数?
由于
答案 0 :(得分:22)
function loadProjects(pID, callbackFunction)
{
$.ajax({
url: myURL,
success: function (dataJS)
{
if(typeof callbackFunction == 'function')
{
callbackFunction.call(this, dataJS);
}
}
});
}
用法:
loadProjects(pID, function(dataJS)
{
// do stuff with your dataJS, bear in mind you can call the parameter any name.
});
答案 1 :(得分:2)
以下是修改函数的方法,以便它可以接受回调。
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
if ($.isFunction(callback)) {
callback.call();
}
}
});
}
以下是您将如何使用它。
function myCoolCallback() {
alert("I am cool");
}
loadProjects(123, myCoolCallback);
或者您可以将它与匿名函数一起使用。
loadProjects(123, function() {
alert("I am cool");
});
答案 2 :(得分:1)
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) { if (callback) { callback(); } }
});
}
调用类似的东西:
loadProjects(111, function() { alert('hello!'); });
答案 3 :(得分:1)
您可以将函数传递给另一个函数,就像它是任何其他对象一样。看看这个:
function loadProjects(pId, callback) {
$.ajax({
url: myUrl,
success: function() {
callback.call(); // <-- invokes your callback with no args
}
}
答案 4 :(得分:0)
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
// your initial method declaration goes here
...
// just call the callback method at the end of the success method
callback();
}
答案 5 :(得分:0)
试试这个:
var loadProjects = function(pID, callback) {
var obj = { url: myURL };
if(typeof callback != "function"){
obj.success = function(dataJS){
loadProjects(1, /* Your callback func here */);
};
} else {
obj.success = callback;
}
$.ajax(obj);
};
loadProjects(1, /* Your callback func here */);