我们应该在自动完成ajax代码中为url写什么?

时间:2015-09-03 13:22:25

标签: jquery asp.net ajax autocomplete

我们应该在自动完成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>     

1 个答案:

答案 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") %>',