【问题标题】:Asp.net JQuery AutoComplete Not displaying dataAsp.net JQuery AutoComplete 不显示数据
【发布时间】:2012-10-07 20:07:41
【问题描述】:

我没有看到使用 JQuery 自动完成插件从我的网络服务返回的数据。

我确定这是我的代码的 JQuery 部分的问题。 (Firebug 显示我正在从我的 web 服务返回一个字符串,格式如下。)

"[\"Component 1\",\"Component 2\",\"Component 2\",\"Component 3\"]"

(我确实认为这可能是因为有 2 个项目相同,但删除重复项没有任何区别。)

我的 JQuery 代码是...

 $('#tags').autocomplete({             
                            source: function (request, response) {
                                    $.ajax({
                                            type: "POST",
                                            contentType: "application/json; charset=utf-8",
                                            url: "QuickSearch/QuickSearch.asmx/GetDealerships",
                                            data: "{'s':'" + request.term + "'}",
                                            dataType: "json",
                                            async: true,
                                            success: function (data){
                                                    response(data.d);
                                                },
                                                error: function (result) {
                                                        alert("Due to unexpected errors we were unable to load data");
                                                    }
                                });
                    },
        minLength: 2
                });
        });

那么任何人都可以告诉我我在成功中的错误:函数吗?

谢谢

编辑

    var array = data.split(",");
    response(array);

上面的代码几乎可以工作,除了我的下拉框也有“包裹每个元素的符号。我可以编辑它以去除多余的字符,但我不得不这样做的事实让我怀疑我没有得到它在某个地方非常正确..

【问题讨论】:

  • 我认为您需要修改您的 Web 服务,以便它发送回 json 数据——尽管我猜您可以解析返回的结果以将其转换为数组。尝试通过将 alert(data) 放入成功函数中来查看发生了什么——看看它是否是一个字符串。
  • 如果从服务器返回的字符串与您的问题完全相同,为什么您使用data.d 获取数据?您使用哪个 asp.net 版本?
  • 它的 .net 2,并且 web 服务设置为返回 json 数据(它有属性 [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 应用于它,并且该数据字符串绝对不是xml
  • alert(data) 返回数据列表,删除 .d 会生成关于缺少标签的 jquery 错误。
  • 看起来您确实没有返回 JSON 数据。如果您尝试 alert(typeof data) - 结果字符串会怎样?如果您要返回 json 数据,那么在使用 firebug 时您会看到如下内容: ["Component 1","Component 2", "Component 2", "Component 3"]

标签: jquery asp.net


【解决方案1】:

将此脚本用于成功事件处理程序:

response($.map(data, function (item) {
     return { label: item, value: item };
}));

更多:http://api.jqueryui.com/autocomplete/#event-response

【讨论】:

  • 这没有用,我的代码返回的数组是字符串列表,而不是键/值对列表。
  • 是的,我这样做了,但没有帮助。我已经修改了 js 以将返回数据解析为一个数组,并且可以正常工作。感谢您的尝试:)
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多