使用jquery ajax在aspx.cs文件中调用webmethod

我有一个default.aspx.cs,其中包含我要调用的webmethod,我的js文件包含了我的jquery ajax。 我无法打电话给网络方法。

这是我的default.aspx.cs:

protected void Page_Load(object sender, EventArgs e) { string[] MyArray = new string[1]; MyArray[0] = "My Value"; Grid1D.DataSource = MyArray; Grid1D.DataBind(); } [WebMethod] public Details[] getDetails(string columnname, string inputVal) { List
list = new List
(); DbAccess dbacc = new DbAccess(); DataTable dt = dbacc.getReportDetails(columnname, inputVal); foreach (DataRow row in dt.Rows) { Details _Details = new Details(); _Details.memid = row["memid"].ToString(); _Details.usrname = row["usrname"].ToString(); _Details.fullname = row["fullname"].ToString(); _Details.fname = row["fname"].ToString(); _Details.mname = row["mname"].ToString(); _Details.lname = row["lname"].ToString(); _Details.bdate = row["bdate"].ToString(); _Details.address = row["address"].ToString(); _Details.sponsorid = row["sponsor_id"].ToString(); _Details.parentid = row["parent_id"].ToString(); _Details.placement = row["placement"].ToString(); _Details.datejoined = row["date_joined"].ToString(); list.Add(_Details); } Grid1D.DataSource = list.ToArray(); Grid1D.DataBind(); return list.ToArray(); }

这是我的js文件:

 function retrieveReportData() { var columnName = $("#ddlFilters").val(); var input = $("#tags").val(); if (columnName != "Select") { var Data = JSON.stringify({ columnname: columnName, inputVal: input }); alert(Data); $.ajax({ url: "Default.aspx/getDetails", data: Data, type: "POST", dataType: "json", contentType: "application/json; charset=utf-8", success: function (mydata) { alert(mydata.d); } }); } else alert("Please choose search filter"); } 

您可能会注意到我正在提醒我的数据,以确保我有正确的值发送到我的webmethod。 但就像我说的那样,它无法调用我的webmethod,也没有在我的ajax中继续我的成功function。 救命! 谢谢! 🙂

你的webmethod需要是static

 [WebMethod] public static Details[] getDetails(string columnname, string inputVal) 

这是一个完整的示例,它显示了开始时的整个过程,直到如何使用asp.net页面通过ajax请求调用服务器端“webmethod”结束。

http://www.codeproject.com/Questions/374136/Call-Page-Method-From-Jquery-Ajax-Call

尝试将type设置为“获取”并在URL中发送参数而不是数据

 url: "Default.aspx/getDetails/?colunmname="+colname+"&inputVal="+inputValue, type: "GET"