如何在前端使用jQuery自动完成时存储大型数据源?

时间:2011-09-30 16:07:54

标签: javascript jquery

如果您有1000k行数据,它看起来像zipcode / city / state,如果您在网站文本字段中键入95101,它将显示san jose,ca;并完成文本字段自动完成。

您选择将哪种数据结构存储在美国的整个邮政编码/城市/州?

也许1000k行。如果我将数据源加载到本地,似乎浪费时间。如果我在JavaScript数组中编写数据源,那么数组太大了,有什么想法吗?

3 个答案:

答案 0 :(得分:1)

你的意思是100万行吗?

使用远程数据源在服务器上进行搜索,只返回少量行。

例如jQuery autocomplete remote example

$( "#birds" ).autocomplete({
        source: "search.php",
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    });

答案 1 :(得分:0)

您可以将jQuery ui自动完成与远程数据源一起使用 - http://jqueryui.com/demos/autocomplete/#remote

摘自:

  

数据源是一个服务器端脚本,它返回通过简单URL指定的JSON数据   对于源选项。此外,minLength选项设置为2   避免会返回太多结果的查询   select-event用于显示一些反馈。

来自那里的代码示例:

$(function() {
    $( "#birds" ).autocomplete({
        source: "search.php",
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    });
});

答案 2 :(得分:0)

如此庞大的数据量,我建议您使用远程调用而不是存储在本地数组或对象中。但我相信,与数组相比,存储对象是一个很好的选择,因为它创建了哈希。