Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
Javascript 当剩下一个远程结果时,Typeahead remote返回两个未定义的结果_Javascript_Typeahead.js_Typeahead_Twitter Typeahead - Fatal编程技术网

Javascript 当剩下一个远程结果时,Typeahead remote返回两个未定义的结果

Javascript 当剩下一个远程结果时,Typeahead remote返回两个未定义的结果,javascript,typeahead.js,typeahead,twitter-typeahead,Javascript,Typeahead.js,Typeahead,Twitter Typeahead,我正在构建一个从远程json API搜索信息的程序。我无法预取任何数据,因为数据集非常大(3000+),为了获得预取结果,我需要提供单字母查询 我遇到的问题是,当我在搜索中只剩下一个结果时,Typehead停止给我结果,只显示两个未定义的项作为结果 这就是它看起来的样子: 我已经尝试了我能想到的一切,通过控制台在这一点上尝试和调试这一点,但找不到任何地方,看看这些数据是从哪里来的 这是用于侦探犬和typeahead初始化的代码 var items = new Bloodhound({

我正在构建一个从远程json API搜索信息的程序。我无法预取任何数据,因为数据集非常大(3000+),为了获得预取结果,我需要提供单字母查询


我遇到的问题是,当我在搜索中只剩下一个结果时,Typehead停止给我结果,只显示两个未定义的项作为结果

这就是它看起来的样子:

我已经尝试了我能想到的一切,通过控制台在这一点上尝试和调试这一点,但找不到任何地方,看看这些数据是从哪里来的

这是用于侦探犬和typeahead初始化的代码

var items = new Bloodhound({
    datumTokenizer: function (datum) {
        return Bloodhound.tokenizers.whitespace(datum.k);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: App.target + "crm/sf/list/item/%QUERY/5",
        filter: function (parsedResponse) {
            return parsedResponse.Listing.list.entries;
        },
    }
});

items.initialize();

$('#itemNoSrch').typeahead(null, {
    autoselect: true,
    displayKey: 'k',
    source: items.ttAdapter()
}).on('typeahead:selected', function (obj, datum, name) {
    App.searchData.itemNo = datum.k.replace("/", "*");

    $('#itemSrchPlaceholder').val(datum.k);
    App.itemInvalid = false;
});
编辑: 下面是crm/sf/list/item/%QUERY/5的JSON响应,其中查询是a

{
"Listing": {
        "list": {
            "entries": [
                {
                    "k": "A-10-10",
                    "v": 1320
                },
                {
                    "k": "A-10-7",
                    "v": 4841
                },
                {
                    "k": "A-10-8",
                    "v": 4821
                },
                {
                    "k": "A14YV4835",
                        "v": 1327
                },
                {
                    "k": "A0554835",
                    "v": 1325
                }
            ]
        }
    }
}
这是我如何只能假设输出在发生这种情况时出现的,我使用了Google chrome最新稳定版本上的控制台

我将提供一个基于API的fiddle,但服务器目前没有添加跨源标题


请告诉我所需的任何其他信息。

我发现了问题!当我的远程数据集是一个结果时,它作为对象而不是数组返回

输出结果如下所示

{
"Listing": {
    "list": {
        "entries": {
            "k": "A-10-10",
            "v": 1320
        }
    }
}
因此,我在过滤器中添加了以下内容

filter: function (parsedResponse) {
        if(parsedResponse.Listing.list.entries instanceof Array){
            return parsedResponse.Listing.list.entries;
        }else{
            return [parsedResponse.Listing.list.entries];
        }
    },

我发现了问题!当我的远程数据集是一个结果时,它作为对象而不是数组返回

输出结果如下所示

{
"Listing": {
    "list": {
        "entries": {
            "k": "A-10-10",
            "v": 1320
        }
    }
}
因此,我在过滤器中添加了以下内容

filter: function (parsedResponse) {
        if(parsedResponse.Listing.list.entries instanceof Array){
            return parsedResponse.Listing.list.entries;
        }else{
            return [parsedResponse.Listing.list.entries];
        }
    },

如果您查看JavaScript控制台,您应该会看到各个AJAX请求,您能确认您在最终查询中返回了结果吗?“我遇到的问题是,当我在搜索中只剩下一个结果时”-您能否更详细地了解这一点,因为它不清楚?另外,响应数据如何查找显示为未定义的项目?向我们展示您的响应数据的结构可能很有用。您能分享一个远程调用
crm/sf/list/item/%QUERY/5
将返回什么的示例吗?@JasonSperske我在控制台中找不到AJAX请求,除了通过源代码查找它之外(还没有时间)我不知道在哪里添加断点来找到它。@Fresh我在问题中添加了更多信息,根据我能找到的内容,返回了什么。如果你知道一个更好的地方,让我知道,我会挖掘它。如果你看你的JavaScript控制台,你应该会看到单独的AJAX请求,你能确认你在最后的查询中得到了结果吗?“我遇到的问题是,当我在搜索中只剩下一个结果时”-由于不清楚,您能详细介绍一下吗?另外,响应数据如何查找显示为未定义的项目?向我们展示您的响应数据的结构可能很有用。您能分享一个远程调用
crm/sf/list/item/%QUERY/5
将返回什么的示例吗?@JasonSperske我在控制台中找不到AJAX请求,除了通过源代码查找它之外(还没有时间)我不知道在哪里添加断点来找到它。@Fresh我在问题中添加了更多信息,根据我能找到的内容,返回了什么。如果你知道一个更好的地方,让我知道,我会挖掘它。谢谢!返回对象时遇到相同问题。谢谢!与正在返回的对象有相同的问题。