Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当数据来自数据库时,自动完成jquery插件不工作?_C#_Jquery_Asp.net_Json_Autocomplete - Fatal编程技术网

C# 当数据来自数据库时,自动完成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

我正在使用这个插件进行textarea建议(自动完成)。只要列表是硬编码的,它就可以正常工作。像这样:-

var建议=[“动作”、“动作脚本”、“Borland”]

但我需要数据库里的单词表。当我从数据库中获取列表时,插件并没有响应。以下是我正在做的:-

我正在使用的插件:-

Jquery:-

$(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
}
)谢谢。这就是问题所在。