【问题标题】:what should we write for url in autocomplete ajax code exactly?我们应该在自动完成 ajax 代码中为 url 写什么?
【发布时间】:2015-11-29 08:42:22
【问题描述】:

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

【问题讨论】:

    标签: jquery asp.net ajax autocomplete


    【解决方案1】:

    您需要提供一个指向端点的 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&lt;string&gt;(从某个数据源填充)并使用 JSON 序列化程序将其转换为 JSON。

    在客户端,您的 URL 变为:

    url:   '<%=ResolveUrl("~/AutoComplete.ashx") %>',
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2020-02-08
      • 2011-01-30
      • 2019-10-12
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 2012-01-04
      相关资源
      最近更新 更多