php ajax实时数据库搜索或一个查询,通过它可以搜索所有结果

时间:2018-07-18 02:32:45

标签: javascript php jquery ajax

我正在为公司构建“客户查找”工具。员工将使用它来提取其客户的记录。

我很好奇,这是更好的,为什么。

选项1:

使用php + ajax通过搜索框的onkeyup搜索。这将是对密钥向上的实时搜索,每次密钥向上时都会查询数据库。我最有可能使用WHERE CustomerName LIKE '%blah blah%' 来解决这个问题,客户数据库最终可能在某个时候变得非常庞大……只是想补充一下。有多大?好吧,这取决于公司。

OR

选项2:

继续进行操作,并通过一个查询呼叫所有客户,所有查询都填充在网站的列表中。当工作人员在搜索框中键入内容时,预先填充的列表将被过滤掉。 同样,客户数据库可能会很大。

无论哪种方式,其大量数据都将通过排序。我需要保留这种“ onkeyup”样式的方法,而无需使用“搜索”按钮。


如果有更好的方法,请也告诉我。


我已经编码了预填充列表的部分,并查看了ajax选项;但是,一旦客户列表开始增长,我就担心性能。因此,这就是这个问题的出处。这篇文章不是要获得特定的代码,只是想学习处理该项目以及将来的类似项目的最佳方法。



我将继续发布当前用于过滤预填充数据的代码,仅供记录...

$(".searchbox").on('keyup', function () {
                if ($(this).val() != '') {
                    search(this);
                }
                else {
                    $(".data").show();
                    $.each($(".searchbox"), function () {
                        if ($(this).val() != '') {
                            $(this).keyup();
                        }
                    });
                }
            });

            function search(ele) {
                var val = $(ele).val() || '';
                if (val == '')
                    return;

                var dataclass = $(ele).attr('data-class');
                var SearchInText = '';
                $.each($(".data:visible"), function () {
                    SearchInText = $(this).find("td." + dataclass).text();
                    if (SearchInText.indexOf(val) == -1)
                        $(this).hide();
                });
            }

1 个答案:

答案 0 :(得分:1)

如果您希望客户数据库很大,那么一次调用将所有浏览器加载到其中并不是一个好的选择。您将必须根据用户输入来实时加载客户。

实时加载(onkeyup)可能会给数据库带来很大压力。但是,您可以通过缓存进行改进。

由于仅从数据库中检索“客户名称”,因此可以使用缓存机制将客户名称保留在内存中,并将过滤后的结果发送到浏览器。这样,您就可以避免对数据库造成压力。

您应该延迟键盘处理程序,以最大程度地减少对服务器的请求。

您可以在以下链接中找到操作方法。

How to delay the .keyup() handler until the user stops typing?