C# 如何从jQuery触发ASP.NET中的函数?网络表单
我对ASP.NET有点生疏,但我在C#方面相当不错。我发现这种方法在PHP中非常简单,但在ASP.NET中有很大不同 我的问题是我不知道如何从jQuery查询ASP.NET函数。我有一个ASP.NET WebForms项目,代码隐藏(TestMe.aspx.cs)包含以下代码:C# 如何从jQuery触发ASP.NET中的函数?网络表单,c#,jquery,asp.net,C#,Jquery,Asp.net,我对ASP.NET有点生疏,但我在C#方面相当不错。我发现这种方法在PHP中非常简单,但在ASP.NET中有很大不同 我的问题是我不知道如何从jQuery查询ASP.NET函数。我有一个ASP.NET WebForms项目,代码隐藏(TestMe.aspx.cs)包含以下代码: [WebMethod] internal List<string> GetSearchSuggestions(string SearchQuery) { string
[WebMethod]
internal List<string> GetSearchSuggestions(string SearchQuery)
{
string ConnectionString = "Data Source=<omitted>;Initial Catalog=<omitted>;Integrated Security=True";
string TSQL_Query = "<omitted>";
List<string> SearchSuggestions = new List<string>();
using (SqlConnection connection = new SqlConnection(ConnectionString))
using (SqlCommand command = new SqlCommand(TSQL_Query, connection))
{
connection.Open();
System.Data.SqlClient.SqlDataReader r = command.ExecuteReader();
while (r.Read())
{
SearchSuggestions.Add(r.GetString(0));
}
}
return SearchSuggestions;
}
[WebMethod]
内部列表GetSearchSuggestions(字符串搜索查询)
{
string ConnectionString=“数据源=;初始目录=;集成安全性=True”;
字符串TSQL_Query=“”;
列表搜索建议=新列表();
使用(SqlConnection连接=新的SqlConnection(ConnectionString))
使用(SqlCommand=newsqlcommand(TSQL_查询,连接))
{
connection.Open();
System.Data.SqlClient.SqlDataReader r=command.ExecuteReader();
while(r.Read())
{
SearchSuggestions.Add(r.GetString(0));
}
}
返回搜索建议;
}
我在同一个文件中有这个函数(TestMe.aspx.cs):
protectedvoid tb\u SearchQuery\u TextChanged(对象发送方,事件参数e)
{
字符串输入=SanitizeInput(this.tb_SearchQuery.Text);
如果(!String.IsNullOrEmpty(输入)&&Input.Length>1)
{
响应。写入(“”);
foreach(GetSearchSuggestions(输入)中的字符串项)
{
回答。写(“- ”+项目+“
”);
}
响应。写入(“
”);
}
}
现在,这确实会产生结果,但只有在单击文本框按钮之后。我想让它自动显示为用户类型
我该怎么做
谢谢 使方法公开且静态(保留
WebMethod
属性):
更新:
根据您的评论,如果文本框用于此AJAX函数,我建议将其设置为一个简单的HTML控件:
<input type="text" id="tb_SearchQuery" />
这对我的系统有效。如果没有得到结果,可以尝试进行故障排除:
$(“#tb_SearchQuery”).val()
是否实际获得了任何信息GetSearchSuggestions()
中放置一个断点,查看a)是否正在调用它,b)SearchQuery
是否按预期填充你能在.aspx页面中显示你的标记吗。。为什么不能从他们的..中调用方法
OnClick
。。?下面是一个关于如何在.cs文件中调用具有[WebMethod]属性的方法的示例。例如,有很多方法可以做到这一点。是的,给你:嗨,我正在尝试你建议的更改,但这根本不起作用。我已经将SearchQuery:“foo”更新为SearchQuery:$(“#tb_SearchQuery”).val(),这也不起作用。这是我的全部代码:-我在那里做错了什么吗?谢谢@heh pastebin在工作时被阻止在这里,但无论如何,你应该在这里发布任何相关代码,这样其他人将来可能会受益。请描述“不工作”-错误?没有结果?请注意,ASP可能会损坏web控件的ID,因此请确保$(“#tb_SearchQuery”)
是正确的。您好,代码太长,我无法在此发布。它不像中那样工作,根本没有结果。没有错误,只是没有结果。ASP.NET如何损坏ID?我把它改成了tb_SearchQuery。例如:$(document).ready(function(){$(“#tb_SearchQuery”).autocomplete({source:function(request,response){$.ajax({url:“TestMe.aspx/GetSearchSuggestions”,type:“POST”,contentType:“application/json;charset=utf-8”,数据:json.stringify({SearchQuery:$(“#tb#SearchQuery”).val()),数据类型:“json”,成功:function(r){console.log(r);}}}}};};我很高兴这让您朝着正确的方向前进;)
[WebMethod]
public static List<string> GetSearchSuggestions(string SearchQuery)
{
....
}
$.ajax({
url: "TestMe.aspx/GetSearchSuggestions",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ SearchQuery: "foo" }),
dataType: "json",
success: function (r) {
console.log(r);
}
});
<input type="text" id="tb_SearchQuery" />
$(document).ready(function () {
$("#tb_SearchQuery").autocomplete({
source: function (request, response) {
$.ajax({
url: "TestMe.aspx/GetSearchSuggestions",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ SearchQuery: $("#tb_SearchQuery").val() }),
dataType: "json",
success: function (r) {
console.log(r);
}
});
}
});
});