在ajax调用中从javascript提升服务器端按钮单击事件

我在页面上有一个提交按钮。

 

在Javascript上,调用ValidateSaveTest函数来validation所有字段。

 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. $("#" + "").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代码:

返回可在客户端事件中使用的字符串,以导致回发到服务器。

这通常用于在类的控件上编写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'); 

注意开头的双下划线

如果用户单击按钮,则应触发回发