【发布时间】:2013-12-12 04:03:31
【问题描述】:
我在我的 ASP.NET-C# 网站上使用 JQuery UI 自动完成功能。
JavaScript:
$(function () {
var availableTags = [
<%=GetAvaliableTags() %>
];
$("input.tag_list").autocomplete({
source: availableTags
});
});
代码隐藏中的 C# 函数:
public string GetAvaliableTags()
{
var tags = new[] { "ActionScript", "Scheme" };
return String.Join(",", tags.Select(x => String.Format("\"{0}\"", x)));
}
这工作正常。但是我怀疑如果我从数据库中获取大量标签,它会在页面加载时立即加载所有这些标签,从而使其变慢。我想到的有效方法是使用 Ajax。但我不是 Ajax 程序员,对此知之甚少。谁能告诉我如何有效地使用Ajax?如何按需拨打GetAvailableTags?
更新
我试过这样:
$(function () {
var availableTags = [function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CreateTopic.aspx/GetAvaliableTags",
data: "{ 'key' : '" + $("input.tag_list").val() + "'}",
dataType: "json",
async: true,
dataFilter: function (data) { return data; },
success: function (data) {if (result.hasOwnProperty("d")) {
$("input.tag_list").autocomplete({
source: result.d
});
}
else {
// No .d; so just use result
$("input.tag_list").autocomplete({
source: result
});
});
}];
$("input.tag_list").autocomplete({
source: availableTags
});
});
相当于GetAvailableTags()的Web方法
[System.Web.Services.WebMethod]
public static string GetAvaliableTags(string key)
{
var tags = new[] { "ActionScript", "Scheme" };
return String.Join(",", tags.Select(x => String.Format("\"{0}\"", x)));
}
但是 Ajax 调用没有被触发。可能是什么原因?
【问题讨论】:
-
您可以根据自己的目的改装此示例:stackoverflow.com/questions/20150130/…
标签: c# javascript jquery asp.net ajax