我们应该在自动完成ajax代码中为url写什么?我应该写那个页面的地址吗?这一部分中的GetCategory是什么?
<script type="text/javascript">
$(document).ready(function () {
$("#txtSearch").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: '<%=ResolveUrl("~/MasterProfile.master/GetCategory") %>',
data: "{'term':'" + $("#txtSearch").val() + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
});
</script>
答案 0 :(得分:0)
您需要提供一个指向端点的URL,该端点将以jQuery Auto Complete期望的格式返回数据,如their documentation中所述。
该端点可以采用多种不同的形式。您可以使用WebMethods或PageMethods,这是您的问题最相似的。但是微软doesn't support those anymore。您可以使用ASP.NET Web API,但如果这是您将要使用它的唯一内容之一,则可能会有些过分。所以我建议你使用通用处理程序(.ashx)。
为您的网站添加通用处理程序,让我们将其称为AutoComplete.ashx并假装它位于网站的根目录。这是一个实现:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "application/json";
context.Response.Write("['testing','more testing','John Doe']");
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
您应该检查context.Request.QueryString["term"]
并在处理程序中相应地过滤返回的值。而不是编写JSON文字,您应该创建一个List<string>
(从某些数据源填充)并使用JSON序列化程序为您将其转换为JSON。
在客户端,您的网址变为:
url: '<%=ResolveUrl("~/AutoComplete.ashx") %>',