我正在使用JQuery UI自動完成與我的ASP.NET-C#網站。在ASP.NET中使用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
?
UPDATE
我想是這樣的:
$(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
});
});
Web方法相當於GetAvailableTags()
[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調用不被解僱。可能是什麼原因?
您可以根據自己的目的對這個示例進行復制:http://stackoverflow.com/questions/20150130/ajax-and-php-to-enter-multiple-forms-input-to-database/20150474#20150474 – MonkeyZeus