javascript - ajax 与数据库查询和显示/隐藏表行

标签 javascript php jquery mysql sql

我正在为一个项目构建一个简单的网站。我的页面之一执行 MySQL 数据库查询并将所有内容输出到 html 表,然后我使用过滤器启用显示/隐藏某些行。 这种策略在处理数百行时效果很好,但在处理数千行时,人们单击链接时会出现明显的延迟。我想也许我可以添加一些 Ajax,在查询未完成时显示“正在加载/查询”信息。

示例网页:http://epigenome.wustl.edu/TE_Methylation/browse.php

当人们访问该链接时,在数据库完成查询之前,我想显示“正在加载”消息,并且当人们选择隐藏几行时,在Javascript完成隐藏相应的行之前,也显示“正在加载”消息信息。 (上面的示例页面没有这个问题,因为只有 900 行,而我正在处理具有 10000 多行的数据集)

有人对如何实现这一目标有一些建议吗?非常感谢:)

最佳答案

处理大量数据时,您希望在将数据发送到客户端之前尝试过滤尽可能多的数据。想象一下您的查看者使用移动设备或连接速度有限。此数据的传输时间会更长。

在你的例子中,我会做的是设置一个ajax服务,它响应给定过滤器/条件的结果的json列表。然后,我会将响应限制为评论中所述的页面或范围。

因此,使用通过 Ajax 请求提供的参数来过滤 MySQL 查询中的结果。

例如(加载更多示例)

var dataService = function() {
    this.Loaded = 0,
    this.Limit = 20,
    this.LoadMore = function() {
        $.getJSON("data_service.php", { FilterH1ES : true, Blah : true, Start : this.Loaded, Limit : this.Limit }, function(results) {
            // Append Rows to table
            // ...
        }
    }
}

// OnLoad call dataService.LoadMore();

然后在 PHP 中,您将根据参数对 MySQL 进行查询过滤。

<?php
    $filters['H1ES'] = $_GET['FilterH1ES'];
    $sql = "SELECT * FROM MyTable WHERE /* Default Filter Here */";

    if ($filters['H1ES']) $sql .= " H1ES Filter";

    // ... run query and json_encode(result);

代码未经测试,我的 JavaScript 很生锈。

关于javascript - ajax 与数据库查询和显示/隐藏表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048894/

相关文章:

javascript - 服务 js 库 : better performance from google code or using asset packager?

javascript - 禁用按钮类型取消验证

javascript - 单击第二个按钮后,VueJs 不删除图像

javascript - 通过 object.property 将数组过滤为唯一对象

PHP 和数据库连接

php - 在 WooCommerce 中对购物车内容总额(不含税)应用折扣

javascript - 在模式中显示 Javascript 变量

javascript - .then() 回调中的 `return` 是从内部作用域还是外部作用域返回?

javascript - png透明区域在iPad上是白色的

jquery - 如何向缩略图添加缩放悬停效果