大家好!
我有这样的ajax()电话:
ajax()
$.ajax({ type: "post", url: "whatever.php", data: { theData: "moo moo" }, success: function(data) { console.log(data); } });
是否可以将其包装在自定义函数中 但 保留回调? 就像是:
function customAjax(u, d, theCallbackStuff) { $.ajax({ type: "post", url: u, data: d, success: function(data) { //RUN theCallbackStuff } }); }
theCallbackStuff 将是这样的:
theCallbackStuff
var m = 1; var n = 2; alert(m + n + data);
编辑:
最近对此表示赞同,我不得不说我不再这样做。$.ajax返回a,promise因此您可以直接使用promise以更一致和更可靠的方式执行我在这里所做的几乎所有工作。
$.ajax
promise
function customRequest(u,d) { var promise = $.ajax({ type: 'post', data: d, url: u }) .done(function (responseData, status, xhr) { // preconfigured logic for success }) .fail(function (xhr, status, err) { //predetermined logic for unsuccessful request }); return promise; }
然后用法如下:
// using `done` which will add the callback to the stack // to be run when the promise is resolved customRequest('whatever.php', {'somekey': 'somevalue'}).done(function (data) { var n = 1, m = 2; alert(m + n + data); }); // using fail which will add the callback to the stack // to be run when the promise is rejected customRequest('whatever.php', {'somekey': 'somevalue'}).fail(function (xhr, status, err) { console.log(status, err); }); // using then which will add callabcks to the // success AND failure stacks respectively when // the request is resolved/rejected customRequest('whatever.php', {'somekey': 'somevalue'}).then( function (data) { var n = 1, m = 2; alert(m + n + data); }, function (xhr, status, err) { console.log(status, err); });
当然,我一直都这样做。您可以在实际的成功Callack中执行回调,也可以将回调分配为成功回调:
function customRequest(u,d,callback) { $.ajax({ type: "post", url: u, data:d, success: function(data) { console.log(data); // predefined logic if any if(typeof callback == 'function') { callback(data); } } }); }
用法如下所示:
customRequest('whatever.php', {'somekey': 'somevalue'}, function (data) { var n = 1, m = 2; alert(m + n + data); });