我有一个LinkButton只需要在delete函数内的Ajax-Call失败时回发。 ajax-call调用Webmethod,如果由于某种原因删除行失败,则抛出异常。 当我抛出异常时,ajax调用到达“error”-branch(如预期的那样)。但是当“deleteSelectedRows”函数返回false时,不会停止回发。 我怎么能这样做呢?
<asp:LinkButton ID="Delete" ClientIDMode="Static" runat="server" Text="Delete" OnClientClick="return deleteSelectedRows()" ></asp:LinkButton>
//the jquery code
function deleteSelectedRows() {
//get selected rows
var selectedRows = ... getting ids ...
var postData = "{ 'IDs':'" + selectedRows + "'}";
var url = "WebMethods.aspx/DeleteRows";
var status= jQuery.ajax({
url: url,
dataType: "html",
async: false,
type: "POST",
data: postData,
contentType: "application/json; charset=utf-8",
success: function (msg) {
return true;//continue postback
},
error: function (err) {
jQuery.jGrowl('Fehler: Auftragspositionen konnten nicht gelöscht werden! Möglicherweise existieren bereits Transaktionen zu dieser Auftragsposition.');
//e.preventDefault();
return false;//stop postback
}
});
return status.status == 200;//true when delete worked, false otherwise
}
编辑:当我使用asp:Button代替asp:Linkbutton时,这有效...但我不知道为什么?!
答案 0 :(得分:0)
jQuery('.btn[onclick]').each(function () {
//override onclick so i can check if the link is disabled before execution
jQuery(this).data('onclick', this.onclick);
this.onclick = function (event) {
if (jQuery(this).hasClass('aspNetDisabled')) { //disabled link
return false;//prevent execution
};
//execute link
jQuery(this).data('onclick').call(this, event || window.event);
};
});
我改变了这个,现在它的工作:
jQuery('.btn[onclick]').each(function () {
//override onclick so i can check if the link is disabled before execution
jQuery(this).data('onclick', this.onclick);
this.onclick = function (event) {
if (jQuery(this).hasClass('aspNetDisabled')) { //disabled link
return false;//prevent execution
};
//execute link
var boolVal = jQuery(this).data('onclick').call(this, event || window.event);
return boolVal;
};
});
我不得不承认,这个问题无法用我提供的信息解决!