Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Ajax Twitter引导式提前打字_Ajax_Twitter Bootstrap_Bootstrap Typeahead_Typeahead - Fatal编程技术网

Ajax Twitter引导式提前打字

Ajax Twitter引导式提前打字,ajax,twitter-bootstrap,bootstrap-typeahead,typeahead,Ajax,Twitter Bootstrap,Bootstrap Typeahead,Typeahead,我已经成功地创建了一个工作的TwitterTypeahead ajax调用 我遇到了一个问题,输入太快时项目会重复 示例场景: 当你试图得到“卡萨布兰卡”时,你会开始输入,并期望当你到达“卡萨”时,它会被相对良好的过滤。不幸的是,这些项目是重复的,因此我没有2或3个选项,而是有9到20个D: 下面是正在执行调用的JS: $(".airportSearch").typeahead({ source: function(query, process) { airports =

我已经成功地创建了一个工作的TwitterTypeahead ajax调用

我遇到了一个问题,输入太快时项目会重复

示例场景:

当你试图得到“卡萨布兰卡”时,你会开始输入,并期望当你到达“卡萨”时,它会被相对良好的过滤。不幸的是,这些项目是重复的,因此我没有2或3个选项,而是有9到20个D:

下面是正在执行调用的JS:

$(".airportSearch").typeahead({
    source: function(query, process) {
        airports = [];
        map = {};

        $.ajax({
            url: url_,
            dataType: "json",
            data: {
                n: 12, q: query
            },
            success: function(data) {
                    $.each(data, function (i, record) {
                    map[record.airport] = record;
                    airports.push(record.city + ", " + record.airport + " (" + record.iata + "), " + record.country);
                });

                process(airports);
            }
        });
    },
    minLength: 1,
    items: 11,
    sorter: function (items) {
        return items.sort();
    },
    updater: function (item) {
        selectedState = map[item].iata;
        return item;
    }
});
如果我打字慢一点,效果会很好,但我们都知道,我不能指望别人 耐心点

当我输入“casa”时,我调用的servlet的响应只有3条记录长:

[
{"type":"airport","city":"Casablanca","airport":"Anfa","iata":"CAS","country":"Morocco","locationId":"airport_CAS"},
{"type":"airport","city":"Casablanca","airport":"Mohammed V","iata":"CMN","country":"Morocco","locationId":"airport_CMN"},
{"type":"airport","city":"Casa Grande Municipal, AZ","airport":"Casa Grande Municipal","iata":"CGZ","country":"United States","locationId":"airport_CGZ"}
]
不幸的是,似乎有一些愚蠢的事情发生在那里的某个地方,我有 找不到。在我键入“casa”时,正在处理的“airports”对象如下所示:

["Casablanca, Anfa (CAS), Morocco", 
"Casablanca, Mohammed V (CMN), Morocco", 
"Casa Grande Municipal, AZ, Casa Grande Municipal (CGZ), United States",
"Cascade Locks, OR, Cascade Locks (CZK), United States",
"Cascavel, Cascavel (CAC), Brazil",
"Casigua, Casigua (CUV), Venezuela",
"Casino, Casino (CSI), Australia",
"Casper, WY, Casper (CPR), United States",
"Cassilandia, Cassilandia (CSS), Brazil",
"Castaway, Castaway (CST), Fiji",
"Castlegar, Castlegar (YCG), Canada",
"Castres Mazamet, Castres Mazamet (DCM), France", 
"Castro Gamboa, Castro Gamboa (WCA), Chile", 
"Casablanca, Anfa (CAS), Morocco",
"Casablanca, Mohammed V (CMN), Morocco", 
"Casa Grande Municipal, AZ, Casa Grande Municipal (CGZ), United States",
"Casablanca, Anfa (CAS), Morocco", 
"Casablanca, Mohammed V (CMN), Morocco",
"Casa Grande Municipal, AZ, Casa Grande Municipal (CGZ), United States"]
正如你所看到的,我当时期望的3个结果都是重复的 此时应已筛选出的记录副本


我是否需要在通话之间等待,或者检查重复的通话?我不太清楚如何处理这个问题,希望您能提供一些意见或建议。

通过移动解决了这个问题

airports = [];
在成功函数内部