簡體   English   中英

在ajax調用中從javascript提升服務器端按鈕單擊事件

[英]Raise Server side button click event from javascript in ajax call

我在頁面上有一個提交按鈕。

<asp:Button ID="btnSubmit" runat="server" Text="Save Test" OnClick="btnSubmit_Click"
                                        OnClientClick="return ValidateSaveTest(this);" />

在Javascript上,調用ValidateSaveTest函數來驗證所有字段。

function ValidateSaveTest(Sender) {

            //do some validation, if fails return false from here. else move forward

        var parameters = {};
        parameters["parametersName"] = $("#" + hidTestId).val();

        var succeededAjaxFn = function(result) {
            if (result== true) {
                var isNewVersion = confirm("Confirmation message");
                if(isNewVersion)
                {
                        //Raise server side button click event. Dont call click side event anymore.
                        $("#" + "<%=btnSubmit.ClientID %>").click();
                }
                return false;
            }

        }
        var failedAjaxFn = function(result) { return false; }

            //jquery ajax call
        CallWebMethod("../Service.asmx", "IsTestUsed", parameters, succeededAjaxFn, failedAjaxFn);

        //async call, always return false hence no postback from here.
        //Need waiting unless ajax response is obtained.
        return false;
    }

一旦收到ajax響應,我需要從javascript引發服務器端按鈕單擊事件。

您可以從ClientScriptManager的GetPostBackEventReference方法獲取所需的JavaScript代碼:

返回可在客戶端事件中使用的字符串,以便回發到服務器。

這通常用於在<asp:linkButton>類的控件上編寫onclick屬性,但您也可以在jQuery回調中使用它:

var succeededAjaxFn = function(result) {
  //Raise server side button click event. Dont call click side event anymore.
  <%= Page.ClientScript.GetPostBackEventReference(btnSubmit, String.Empty) %>;
}

上面的<%= %>塊會為您寫出以下JavaScript:

__doPostBack('btnSubmit','')

反過來,它會以一種ASP.NET認為單擊按鈕的方式將表單發回服務器,因此服務器端btnSubmit_Click被觸發。

請注意,使用此方法,您可以將C#引用傳遞給實際控件。 您無需擔心其客戶端ID,或__doPostback() JavaScript函數的正確名稱和參數。 調用此方法時, ClientScriptManager處理所有這些問題。

嘗試這個

__doPostBack('<%=btDemo.ClientID%>','OnClick');

注意開頭的雙下划線

如果用戶單擊按鈕,則應觸發回發

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM