如何用回调编写jQuery函数?

我有以下function:

function loadProjects(pID) { $.ajax({ url: myURL, success: function (dataJS) {XXXXXXXXXXXXXXXX} }); } 

我把这个函数称为loadProjects(1);

问题是我希望能够在成功之后定义一个callBack函数,并且我想在我执行loadProjects时包含它(1,回调:{此处包含的任何js在成功后被回调})

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

谢谢

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

以下是如何修改函数以便它可以接受回调。

 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"); }); 
 function loadProjects(pID, callback) { $.ajax({ url: myURL, success: function (dataJS) { if (callback) { callback(); } } }); } 

调用这样的东西:

 loadProjects(111, function() { alert('hello!'); }); 

您可以将函数传递给另一个函数,就像它是任何其他对象一样。 看一下这个:

 function loadProjects(pId, callback) { $.ajax({ url: myUrl, success: function() { callback.call(); // <-- invokes your callback with no args } } 

您还可以阅读MDC文档(function.call()) 。

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

试试这个:

 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 */);