Jquery ajax在用户控件中调用代码隐藏方法

我们可以使用Jquery ajax调用方法后面的用户控制代码吗?

谢谢,

您不能使用Jquery Ajax直接在用户控件中调用方法。

您可以尝试以下方法之一:

  • 将URL设置为PageName.aspx?Method=YourMethod或者可能添加一些其他限制,以便您知道哪个用户控件应该执行该方法。 然后在您的用户控件中,您可以检查查询字符串中是否存在限制,并执行给定的方法。

  • 如果需要执行异步操作,可以使用客户端回调来执行某些方法。 在页面的GetCallbackResult中,您可以找到导致回调的控件,并将请求及其参数传递给控件。

“我们可以使用Jquery ajax调用方法后面的用户控制代码吗?

如果您的意思是使用Web方法,没有。 您无法通过PageMethod以外部查询的方式直接访问用户控件的方法。 它们仅在页面(ascx)级别受支持。

只需使用WebService asmx代替您的function。

不能。你不能从JQuery Ajax调用用户控件的代码隐藏,但如果你有一个aspx页面,你可以像这样的样本调用它:

  function AddNew() { var lname = $("#<%# txtLNameAdd.ClientID %>").val(); //$("#txtFname").val(); // var fname = $("#<%# txtfnameadd.ClientID %>").val(); //$("#txtLname").val(); // var email = $("#<%# txtEmailAdd.ClientID %>").val(); var address = $("#<%# txtAddressAdd.ClientID %>").val(); var paramList = '{"fname":"' + fname + '","lname":"' + lname + '","email":"' + email + '","address":"' + address + '"}'; alert(paramList); $.ajax({ type: "POST", url: "GetData.aspx/AddNewMember", dataType: "json", contentType: "application/json", processData: false, data: paramList, success: function (msg) { alert('success'); }, error: function (msg) { alert("error " + msg.responseText); } }); return false; } 

后面的代码应该是static ,像这样的[WebMethod]

 [WebMethod] public static void AddNewMember(string fname, string lname, string email, string address) { SqlConnection con = new SqlConnection( System.Configuration.ConfigurationManager .ConnectionStrings["RepeaterDBConnection"].ConnectionString); SqlCommand comm = new SqlCommand(); try { comm.Connection = con; comm.CommandType = CommandType.StoredProcedure; comm.CommandText = "[dbo].[AddTeamMember]"; comm.Parameters.Add(new SqlParameter("@psFname", SqlDbType.VarChar)).Value = fname; comm.Parameters.Add(new SqlParameter("@psLname", SqlDbType.VarChar)).Value = lname; comm.Parameters.Add(new SqlParameter("@psEmail", SqlDbType.VarChar)).Value = email; comm.Parameters.Add(new SqlParameter("@psAddress", SqlDbType.VarChar)).Value = address; con.Open(); comm.ExecuteNonQuery(); } catch (SqlException Ex) { // write any exception } finally { con.Close(); } } 

我以前没有使用用户控件尝试它,但你可以尝试一下。 将Ajax方法放在包含控件的页面上,并从用户控件调用WebMethod。

我认为它应该有效,因为所有文件都将被合并。