我正在使用DataTables插件和colorbox插件。如果.post成功,我试图让我的函数返回true。
jQuery('.msg_delete').live('click', function () {
var aData = oTable.fnGetData(nTr);
if (deleteMessage(aData[6]) == true) {
jQuery.colorbox.close();
oTable.fnDeleteRow(nTr);
}
return false;
});
function deleteMessage(messageID) {
jQuery.post('ajax/msg_functions.asp', { action: 'delete', messageid: messageID }, function (data) {
})
.success(function () { return true; })
.error(function () { alert("There was an error while trying to make this request; If it persists please contact support"); })
;
}
现在它正确地发布了帖子。我知道这是因为邮件被删除了。所以我认为它会转到.success
,我认为现在会回归真实。但它似乎并没有这样做。
似乎永远不会去colorbox.close()
或fnDeleteRow.
任何人都能看到我在这里失踪的东西吗?
答案 0 :(得分:4)
您的返回仅返回当前函数,即您传递给$.ajax
的匿名函数。
您的代码将无法以当前的方式运行,并开展示例。
jQuery('.msg_delete').live('click', function() {
var aData = oTable.fnGetData(nTr);
deleteMessage(aData[6]).done(function(){
jQuery.colorbox.close();
oTable.fnDeleteRow(nTr);
});
return false;
});
function deleteMessage(messageID) {
return jQuery.post('ajax/msg_functions.asp', {
action: 'delete',
messageid: messageID
}).fail(function() {
alert("There was an error while trying to make this request; If it persists please contact support");
});
}
此外,.success
已弃用,请使用.done
编辑:
为了完整起见,您可以在变量中使用async:false
并存储true
或false
,然后从您的函数中返回该值,但效率较低,因此不推荐使用async:false
暂停代码执行和用户交互的事实。