【问题标题】:Best way to show number of results in a filter using Ajax使用 Ajax 在过滤器中显示结果数量的最佳方式
【发布时间】:2014-03-06 09:00:24
【问题描述】:

首先简单解释一下我现在的情况:

我的网页包含(大约 40 个,分类的)过滤器列表和 400 多种产品的列表。

我得到了使用 Ajax 的产品列表。默认情况下会显示 20 个产品,但当您滚动到底部时,会添加更多产品。用户可以通过单击所需选项来过滤结果。这就像一个简化的ebay。唯一的区别是当我点击过滤器时我不会重新加载页面,而是使用 Ajax 来获取我的产品。

现在,ebay 在每个过滤器选项旁边都有这些数字,它显示了如果您点击该选项会获得的结果数量。我的问题是,显示这些数字的最佳方式是什么?

我的方法是为每个过滤器选项运行一个 sql 查询 (SELECT COUNT(id) FROM sometable WHERE filter='something')。然而,这意味着我必须在加载时运行大约 40 个查询,并且每次用户单击一个选项时(使用 Ajax)。这似乎是服务器负载过重,还是我错了?

【问题讨论】:

  • 如果您已经在使用 Ajax 我假设您使用 Json,为什么不在本机 javascript 中进行过滤和计数呢? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 然后使用 .length 计算结果?
  • 目前我使用 Ajax 调用 PHP 脚本,该脚本返回我的产品。加载时加载了 20 个产品(sql 查询:LIMIT 0,20)。您建议我加载所有产品,将它们放在一个数组中,然后使用 javascript 过滤?附言。是的,我正在使用 json
  • 嗯,如果您想在 SQL 中计算可用产品,您需要按照您的建议进行操作,这是一种非常有效的方法。提高效率的唯一方法是存储过程。
  • 为什么不在页面加载时额外调用一次 ajax 来获取每个过滤器的总量并将其保存在变量/对象中?那么您可以通过其他 javascript 调用来获取您的 20 种产品。

标签: php jquery mysql sql ajax


【解决方案1】:

我将采用我的第一种方法,但现在我使用UNION 查询来获取所有计数。这样我只需要为每个过滤器运行 1 个查询而不是 1 个查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多