Jquery 在选择框中处理海量数据

Jquery 在选择框中处理海量数据,jquery,html-select,large-data,Jquery,Html Select,Large Data,嗨,我正在使用jQuery并从我的一个mySQL表中检索“items”。我在那个表中有大约20000个“条目”,它将在我的表单中用作搜索参数。因此,基本上他们可以搜索包含该“项目”的“采购” 现在我需要他们能够从下拉列表中选择“项目”,但要用20000个“项目”填充下拉列表需要很长时间。我想知道是否有jQuery插件支持自动完成下拉框分页 这样,用户可以开始键入前几个字母并过滤列表,或者只需单击箭头即可看到20个项目,最后一个是“请单击查看更多” 对于处理大型数据集和用所述数据集填充HTML选择

嗨,我正在使用jQuery并从我的一个mySQL表中检索“items”。我在那个表中有大约20000个“条目”,它将在我的表单中用作搜索参数。因此,基本上他们可以搜索包含该“项目”的“采购”

现在我需要他们能够从下拉列表中选择“项目”,但要用20000个“项目”填充下拉列表需要很长时间。我想知道是否有jQuery插件支持自动完成下拉框分页

这样,用户可以开始键入前几个字母并过滤列表,或者只需单击箭头即可看到20个项目,最后一个是“请单击查看更多”

对于处理大型数据集和用所述数据集填充HTML选择框,我愿意接受任何其他建议


这个搜索页面上可能有多个选择框,用户可以选择一个“项目”或“客户”或任何类似的内容,然后单击“搜索”。

我不认为有一个特定的插件可以满足您的需求,但您应该能够很容易地自己编写一个插件

基本上,这个概念是:

  • 使用jQuery
    $.ajax
    从数据库检索数据
  • 将两个参数从jQuery传递到数据库SELECT语句
    • 关键词
    • 页面索引
  • 搜索以关键字(自动完成)开头的所有项目,但只返回特定数量的结果(即20个)
  • 在下拉列表中填充结果后,检查是否确实有超过20个项目,并附加一个名为“请点击查看更多…”的额外项目
  • 通过检查它的索引并使用下拉菜单
    onchange
    事件(它的索引将是20,因为它是列表中的第21项),将相同的
    $.ajax
    调用绑定到该
    ,并增加发送到数据库的页面索引

如果您需要更多有关PHP/mySQL中分页的帮助,请查看此信息。

对于如此大的数据集,是时候使用Ajax了

查看以下自动完成插件:


20000个项目对于任何类型的下拉列表来说都太大,除非列表仅在响应搜索时返回项目,最好是搜索中至少包含几个字符。“点击更多”看起来很弱,不是典型的下拉行为。如果用户想要的项目是列表中的10000个项目呢

假设项目是简单的名称/值对(字符串名称、整数ID等)

然而,JSON可以以轻量级的方式表示20000个项目。您可以创建一个简单的客户端对话框(或列表),该对话框绑定到这些项目,通过它们进行分页,并提供实时过滤。这绝对是可能的(我已经做到了),但它需要大量的自定义脚本或现有控件

这种方法的好处是,您可以在每次击键时进行实时搜索。令人惊讶的是,JavaScript可以非常轻松地处理大型数据集上的简单搜索

如果性能是关键,那么20000个条目仍然太大,即使在JSON中也是如此。将客户端脚本与用于搜索、筛选、分页等的服务器代码结合起来,只向用户显示有限的结果集


编辑:如果您不想编写自己的数据表控件,那么对于使用JSON的网格,这里有一个可能的选项:

当您有20000个项目时,是时候将其从下拉菜单中移到允许搜索的页面上的真实菜单中了。真的会有人滚动20000个项目来查找他们的项目吗?我会推荐一个分页/排序/搜索字段或一些可以让用户体验更好的东西。这是我的$.02。如何将自动完成/建议与ajax和服务器端查询结合使用。我不是说您应该切换js框架,而是查看dojo的FilteringSelect示例,它正是连接到QueryReadStore时您想要的。我想Extjs也有类似的功能。是的,我在我的很多项目中都使用了Dojo,这就是我使用选择框进行分页和自动完成的想法。我正在为我当前的项目使用jQuery,很高兴知道他们也有自动完成功能。这对我来说可能很管用。谢谢大家!谢谢这些链接真的很有帮助。我完全忘记了jQuery也有一个默认的自动完成插件。。。