0

我有一个 LinkBut​​ton,它只需要在删除函数中的 Ajax-Call 失败时回发。ajax 调用调用一个 Web 方法,如果由于某种原因删除行失败,该方法将引发异常。当我抛出异常时,ajax 调用到达“错误”分支(如预期的那样)。但是当“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 时有效……但我不知道为什么?!

4

1 回答 1

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

我不得不承认,我提供的信息无法解决这个问题!

于 2012-11-30T07:27:19.247 回答