jquery自动完成不在母版页中工作

时间:2014-05-26 09:35:00

标签: c# asp.net master-pages jquery-autocomplete

我正在尝试在我的母版页中使用jquery自动完成,但它无法正常工作。请帮我解决这个问题。我的主页顶部有一个文本框作为搜索框,我想要自动完成。但是永远不会调用母版页函数getProductList。

我的自动填充代码如下:

<script type="text/javascript">
     $(function () {
         $(".tb").autocomplete({
             source: function (request, response) {
                 $.ajax({
                     url: "MasterPage.master/getProductList",
                     data: "{ 'keyword': '" + request.term + "' }",
                     dataType: "json",
                     type: "POST",
                     contentType: "application/json; charset=utf-8",
                     dataFilter: function (data) { return data; },
                     success: function (data) {
                         response($.map(data.d, function (item) {
                             return {
                                 value: item.Name
                             }
                         }))
                     },
                     error: function (XMLHttpRequest, textStatus, errorThrown) {
                         alert(textStatus);
                     }
                 });
             },
             minLength: 1
         });
     });
</script>


  <asp:TextBox  class="tb" id="appendedInput"   placeholder="Search" runat ="server"></asp:TextBox>
母版页后面的代码中的代码如下:

  [WebMethod ]
    public  ProductList[]getProductList(string keyword)
    {
        List<ProductList> Products = new List<ProductList>();
     DataSet    _ds = new DataSet();
        ProductsBAL pbl = new ProductsBAL(0);
        pbl.Search(_ds, URLMessage.GetParam("Keyword", "").ToString());

        foreach (DataRow dr in _ds.Tables[pbl.SqlEntityX].Rows)
        {
            ProductList prolist = new ProductList();
            prolist.Name = dr["Name"].ToString();
            Products.Add(prolist);



        }

        return Products.ToArray();


    }

    public class ProductList
    {
       public  string Name { get; set; }

    }

2 个答案:

答案 0 :(得分:1)

是的,需要将代码放在母版页的代码中。然后从主页面调用它,如index.aspx / getautomcompletelist。

答案 1 :(得分:0)

在这里,您在$ .ajax中调用了错误的URL。

你必须通过&#34; getProductList&#34;来调用.aspx页面。方法

url:&#34; MasterPage.aspx / getProductList&#34;