[英]Calling asmx web service using JQuery with parameters causes 500 error
[英]jQuery Calling an ASMX Web Service that Returns Data
我正在使用jsTree来组织用户创建的页面。 右键单击并按“重命名”后,我想触发一个JS函数,该函数在我的代码中击中一个函数,而无需回发(如果可能)。 我希望它抓住我在ID上的任何项目,然后在数据库中重命名它并更新jsTree。
这是一个示例代码隐藏函数:
[System.Web.Services.WebMethod]
protected void RenamePage(object sender, EventArgs e)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(Global.conString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("contentPageUpdate", con))
{
cmd.Parameters.Add("@title", SqlDbType.VarChar).Value = Global.SafeSqlLiteral(txtPage.Text, 1);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
}
con.Close();
//Update Content Page Repeater
using (SqlCommand cmd = new SqlCommand("contentPageGetAll", con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
}
}
}
不要认为它是jQuery击中C#函数,而是jQuery击中URI标识的资源。
当您使用jQuery发出AJAX请求时,您将给出目标的网址,并且它将对该网址执行标准的HttpRequest。 这可以是页面(Web窗体)或控制器动作(MVC)。
由于您似乎正在使用网络表单,因此可以创建一个新页面来处理此请求。 如果在Page_Load
方法中放置一个断点,则会在调用AJAX方法时触发该断点:
在右键单击的javascript中,您可以使用jQuery的ajax
方法,如下所示:
$.ajax('mypage.aspx');
在您的mypage.aspx中:
public void Page_Load(object sender, EventArgs e)
{
Response.Write("You called me!");
}
您可以通过在$.ajax
调用中添加一些参数来获得回写的响应:
$.ajax('mypage.aspx', { success: function(data, textStatus, jqXHR) {
alert(data);
}});
它不完全是您要尝试执行的操作,但是我认为这可以使您基本了解使用JQuery调用URI并执行“数据库” * ;-)所涉及的内容。
您还将需要@MichaelShimmins的Jquery AJax代码(我在我的帖子中忽略了它)
HTH。
* (that's not a technical term - apologies)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.