Javascript 使用jquery在asp.net中自动完成
在这里,我尝试在asp.net中使用jquery自动完成,我尝试从sql数据源检索数据,并将其用于自动获取。当我运行代码时,自动完成没有工作 我的代码Javascript 使用jquery在asp.net中自动完成,javascript,c#,jquery,asp.net,sql-server,Javascript,C#,Jquery,Asp.net,Sql Server,在这里,我尝试在asp.net中使用jquery自动完成,我尝试从sql数据源检索数据,并将其用于自动获取。当我运行代码时,自动完成没有工作 我的代码 <script src="jquery.min.js" type="text/javascript"></script> <script src="jquery-ui.min.js" type="text/javascript"></script> <script type="
<script src="jquery.min.js" type="text/javascript"></script>
<script src="jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
SearchText();
});
function SearchText() {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Inventory.aspx/GetAutoCompleteData",
data: "{'username':'" + document.getElementById('txtPartno').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
}
</script>
文本框字段
<asp:TextBox ID="txtPartno" CssClass="Textboxbase" class="autosuggest" runat="server"></asp:TextBox>
还有我的c代码
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
List<string> result = new List<string>();
using (SqlConnection con = new SqlConnection("Data Source=MYPC-GN\\KASPLDB;Integrated Security=False;User ID=sa;Password=*****;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False"))
{
using (SqlCommand cmd = new SqlCommand("select DISTINCT PART_NO from Inventory where UserName LIKE '%'+@SearchText+'%'", con))
{
con.Open();
cmd.Parameters.AddWithValue("@SearchText", username);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
result.Add(dr["UserName"].ToString());
}
return result;
}
}
}
我看到的一个问题是,您的javascript调用有点错误。无法获取由asp自身使用document.getElementById'txtPartNo'创建的textbox的值。要获取此值,您必须获取它的客户端id,您可以使用- txtPartNo.ClientID所以最终这将成为-
data: "{'username':'" + document.getElementById('<%= txtPartno.ClientID %>').value + "'}",
如果您不这样做,那么您将无法获得该文本框的实际值,并且undefined将被发送到不会返回任何内容的C方法。首先,您应该检查是否调用了JavaScript函数。 如果它被调用,那么你应该检查url是否正确。 您可以登录开发者工具/firebug等,查看您发送的请求。我的操作如下: ajaxCallSetting.js var ajaxCallSetting=功能元素、消息、请求{ var baseInfo={ 基本URL:http://localhost:10266/ }; var buildUrl=函数{ 返回baseInfo.baseUrl+消息; }; var callApi=functionrequest,response{ $.ajax{ 类型:POST,, contentType:application/json;字符集=utf-8, url:buildUrl, 数据:JSON.stringifyreq, 数据类型:json }.successfunctiondata{ 回答数据d; }; }; 返回{ init:函数{ $element.autocomplete{ 资料来源:callApi }; } };
}; 我认为你的文本框连接不好。试试这个:
<asp:TextBox ID="txtPartno" CssClass="Textboxbase autosuggest" runat="server"></asp:TextBox>
你得到的错误是什么?没有错误,但没有按预期检索数据。你的GetAutoCompletedData是否被命中?似乎没有,有什么方法可以检查Debugger吗?你能通过放置断点来确保你在C中描述的函数被命中吗?试过了,伙计,它仍然没有检索数据,,,能否添加一个ScriptMethodResponseFormat=ResponseFormat.Json的属性?
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Inventory.aspx/GetAutoCompleteData",
data: "{'username':'" + request.term + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});