[英]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.