我正在尝试在我的母版页中使用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; }
}
答案 0 :(得分:1)
是的,需要将代码放在母版页的代码中。然后从主页面调用它,如index.aspx / getautomcompletelist。
答案 1 :(得分:0)
在这里,您在$ .ajax中调用了错误的URL。
你必须通过&#34; getProductList&#34;来调用.aspx页面。方法
url:&#34; MasterPage.aspx / getProductList&#34;