【问题标题】:Autocomplete not giving results of JSon file自动完成不给出 JSON 文件的结果
【发布时间】:2023-03-18 16:15:01
【问题描述】:

我正在尝试使用自动完成功能来返回“提供者”列表。通过反复试验显示的唯一结果是“[object object]”。其他一切都是“没有搜索结果”。有人可以指点我一个方向,我将不胜感激。

edit:这是在本地使用的。没有网络服务器等。

<form id="searchform" method="get" role="search">
                <input id="searchfield" />
                <input type="submit" name="go" value="go!" />
            </form>


<script src='js/jquery-1.11.0.min.js'></script>
<script src="js/autocomplete/jquery-ui-1.10.3.custom.js" type="text/javascript" charset="utf-8"></script>

<script>
    $(function() {
    $.ajax({
        url: "json/Providers.json",
        dataType: "json",
        success: function(data) {
            var cat_data = $.map(data, function(item) {
                return {
                    ProviderID: item.ProviderID,
                    Name: item.Name,                  
                };
            });
            $("#searchfield").autocomplete({
                delay: 0,
                source: cat_data,
                minlength:0
            });
        }
    });
});
</script>

json格式

   {"Providers":[{"ProviderID":"3","NAME":"name1"}, 
    {"ProviderID":"4","NAME":"name2"},  
    {"ProviderID":"5","NAME":"name3"}]} 

【问题讨论】:

  • 试试$.map(data.Providers, function(item) {
  • 得到一个 TypeError: this.source is not a function in Firefox and a SCRIPT5007: Object expected in explorer
  • 尝试 console.log(data) 并检查 cat_data var

标签: jquery ajax json autocomplete


【解决方案1】:

你需要把data改成data.Providers,还有一些其他的错误

$(function() {
    $.ajax({
        url: "json/Providers.json",
        dataType: "json",
        success: function(data) {
            var cat_data = $.map(data.Providers, function(item) {
                return {
                    value: item.ProviderID,
                    label: item.NAME

                };
            });
            $("#searchfield").autocomplete({
                delay: 0,
                source: cat_data,
                minlength:0
            });
        }
    });
});

【讨论】:

  • '[object object]' 仍然只是现在它实际识别文件时才给出结果。说 27159 结果,但仅当我键入字符“[object object]”时。它不会识别“name1”等。然后在下面加载 27159 个子弹,旁边没有名字
  • 更新后的代码给出了现在输入任何字符的所有结果,无论字符是否在文件中。例如: asdf 给出所有结果。仍然格式化为项目符号,实际上并未列出名称
  • 它有效!非常感谢,这件事已经破解了一段时间。
【解决方案2】:
  $("#searchfield").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "json/Providers.json",
                    type: "GET",
                    dataType: "json",
                    function (data) {
                        response(jQuery.map(data, function (item) {
                            return { label: item.Name, value: item.ProviderID };
                        }));
                    },
                    error: function (error) {
                        console.log(error);
                    }
                }); //end of jQuery.ajax({
            }
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2013-05-13
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多