C# 当数据来自数据库时,自动完成jquery插件不工作?
我正在使用这个插件进行textarea建议(自动完成)。只要列表是硬编码的,它就可以正常工作。像这样:- var建议=[“动作”、“动作脚本”、“Borland”] 但我需要数据库里的单词表。当我从数据库中获取列表时,插件并没有响应。以下是我正在做的:- 我正在使用的插件:- Jquery:-C# 当数据来自数据库时,自动完成jquery插件不工作?,c#,jquery,asp.net,json,autocomplete,C#,Jquery,Asp.net,Json,Autocomplete,我正在使用这个插件进行textarea建议(自动完成)。只要列表是硬编码的,它就可以正常工作。像这样:- var建议=[“动作”、“动作脚本”、“Borland”] 但我需要数据库里的单词表。当我从数据库中获取列表时,插件并没有响应。以下是我正在做的:- 我正在使用的插件:- Jquery:- $(document).ready(function() { var suggests = getList(); var $txt = $('#<%=txtArea
$(document).ready(function() {
var suggests = getList();
var $txt = $('#<%=txtArea.ClientID %>');
$txt.asuggest(suggests);
});
function getList() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ajaxService.asmx/autocompletelist",
data: "{groupUid:'" + 4 + "', clientUid: '" + 8 + "'}",
dataType: "json",
success: function(data) {
return (data.d);
},
error: function(result) {
alert("No Match");
}
});
}
$(文档).ready(函数(){
var=getList();
var$txt=$(“#”);
$txt.asugest(建议);
});
函数getList(){
$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“ajaxService.asmx/autocompletelist”,
数据:“{groupUid:'”+4+”,clientUid:'“+8+”}”,
数据类型:“json”,
成功:功能(数据){
申报表(数据d);
},
错误:函数(结果){
警惕(“不匹配”);
}
});
}
代码隐藏:-
[WebMethod]
public List<string> autocompletelist(int groupUid, int clientUid)
{
//call to database for the list.
//code/
List<string> result = new List<string>();
result.Add("Action");
result.Add("ActionScript");
result.Add("Borland");
return result;
}
[WebMethod]
公共列表自动完成列表(int-groupUid、int-clientUid)
{
//调用数据库获取列表。
//代码/
列表结果=新列表();
结果。添加(“行动”);
结果。添加(“ActionScript”);
结果。添加(“Borland”);
返回结果;
}
请建议?这和方括号有关吗?如何从数据库中获取该结果?异步执行ajax
success
函数(在收到响应之前不会触发该函数),但您尝试以同步方式使用其结果。因此,当您调用$txt.asugest(建议)时代码>,没有发生任何事情,因为表明
尚未填充。这是因为ajax请求尚未完成,但您的代码不知道这一点。解决此问题的最简单方法是将UI的逻辑放入success
方法本身。这样你的插件就不会被调用,直到建议变量被保证填充。试试这个:
$(document).ready(function() {
getList();
});
function getList() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ajaxService.asmx/autocompletelist",
data: "{groupUid:'" + 4 + "', clientUid: '" + 8 + "'}",
dataType: "json",
success: function(data) {
var $txt = $('#<%=txtArea.ClientID %>');
$txt.asuggest(data);
},
error: function(result) {
alert("No Match");
}
});
}
$(文档).ready(函数(){
getList();
});
函数getList(){
$.ajax({
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“ajaxService.asmx/autocompletelist”,
数据:“{groupUid:'”+4+”,clientUid:'“+8+”}”,
数据类型:“json”,
成功:功能(数据){
var$txt=$(“#”);
$txt.asugest(数据);
},
错误:函数(结果){
警惕(“不匹配”);
}
});
}
您可以先按此警报(建议)执行,检查结果是否正确,然后将结果转换为数组。
将json转换为数组:
var dataArray=eval(jsonStr);
for(var i in dataArray)
{
//TODO
}
)谢谢。这就是问题所在。