Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
使用自动完成的20K产品,希望构建静态javascript文件_Javascript_Jquery_Autocomplete - Fatal编程技术网

使用自动完成的20K产品,希望构建静态javascript文件

使用自动完成的20K产品,希望构建静态javascript文件,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我希望创建静态的.js文件,而不是每次有人在搜索框中键入字符时都要点击数据库 我可以使用哪些技术来创建静态的.js文件,这些文件基本上是用来加载jquery autocomplete插件的数组 我的产品sku看起来像: ABC1234 或 (abc是制造商名称的缩写形式,而“Alpha-Beta C”是长形式,后跟3-4个数字)。这是JSON的一大用途。Javascript对象表示法。您只需包含JS文件,就可以将所有数据保存在对象中 请检查我的语法,它来自内存 您还可以在击键2/3次后通

我希望创建静态的.js文件,而不是每次有人在搜索框中键入字符时都要点击数据库

我可以使用哪些技术来创建静态的.js文件,这些文件基本上是用来加载jquery autocomplete插件的数组

我的产品sku看起来像:

ABC1234  


(abc是制造商名称的缩写形式,而“Alpha-Beta C”是长形式,后跟3-4个数字)。

这是JSON的一大用途。Javascript对象表示法。您只需包含JS文件,就可以将所有数据保存在对象中


请检查我的语法,它来自内存

您还可以在击键2/3次后通过AJAX调用发送JSON中所有剩余的可能性,并从该对象/数组中提取剩余的结果(我不知道JQuery是否支持这种行为)。这节省了带宽,因为不必将整个数据库发送到客户端,而且不必多次调用数据库(通常,如果第一个键是正确的)


我不确定您的问题是否与服务器端相关(也不确定您使用的是什么服务器端技术),因此仅供参考,请查看(尤其是)了解更多信息。

您可以构建一个最小化有限状态机(例如DAWG),其中包含所有现有产品代码的最终节点。然后将其以某种优化格式存储在Javascript字符串(或少量字符串)中

然后这些字符串可以被压缩发送到浏览器,加载可能不需要很长时间

然后,您可以根据已键入的字符数遍历状态机,并高效地查找以这些字符开头的所有产品代码

反正我也会这么做的


或者可能只是加载整个字典,因为20k不是那么多。我写了一个Javascript游戏,它加载了一个比这更大的字典,这不是一个真正的问题。

根据带宽限制和每个产品名称的长度,第一个页面加载可能是一个doozey。我肯定会确保js脚本加载程序位于页面底部。这是真的。您可能想做的是将JSON文件放在AJAX调用的后端。这样,您就不会在运行时将整个数据库加载到页面中,也不会每次都访问数据库。除非你的产品数据库不断更新,否则这是可行的。是的,向客户发送一个JS准数据库听起来很痛苦。他说是20K个产品,而不是20K字节。如果一个产品记录由100字节的JSON表示,那么您必须下载2MB的JSON数据才能获得整个数据库。不过,仅存储产品代码不应占用100字节,如果您高效地存储并压缩它们,则占用的字节数将大大减少。我认为10字节更现实。
Alpha Beta C 1234
var products = [{sku:'aaaa', price: 50}, {sku:'bbbb', price: 60}];