javascript - 如何使用 Ajax 调用从 MySql 中拆分最大的数组?

标签 javascript php jquery mysql ajax

我有一个大问题:在我的网站上会有一个页面,其中有一个表单,用户可以在其中选择日期和其他选项来查看世界上发生的地震。

问题是,例如,用户是否可以查看去年发生的地震。 此选项将返回一个非常大的数组,我认为这会减慢加载速度,并且浏览器可能会对文件有限制。

那么我该如何拆分大数组呢?

PHP

$query = "SELECT * FROM earthquakes WHERE milliseconds > 0";
$query = mysqli_query($con,$query);

if ($result = mysqli_query($con, $query)) {
   while ($row = mysqli_fetch_assoc($result)) { // fetches a result row as an associative array
       $result[] = $row;
   }
   mysqli_free_result($result);
}

echo json_encode($result); // return value of $result
mysqli_close($con); // close connection with database

JavaScript

$.ajax({
    type: "POST",
    url: "database-sismico.php?"+query,
    success: function (result) { //Performs an async AJAX request
        if (result) {

        }
        else {
            //will print alert to advice user that there aren't quakes
        }
    },
    dataType:"json"
});

你能给我一些建议吗? 非常感谢,对不起我的英语...

最佳答案

虽然这个问题有点宽泛,但我可以提供一些相当标准的建议,应该可以帮助您指明正确的方向。

一般来说,当你有一些东西的列表时,这个列表可能非常大,一个常用的技术是实现“pagination”。从字面上看,将其变成多个页面。

一般的方法是以某种方式传入页面参数(通常在查询字符串中),然后使用它来获取一定数量的结果。

在查询端,您可以使用 LIMIT 设置最大值,然后使用页面参数设置 OFFSET

例如,如果您打算每页显示 200 个结果,那么您的 LIMIT 就是 200。如果您在第 3 页,那么您可以将偏移量设置为 (page- 1)*max,即 (3-1)*200400。这将从结果 400 开始获取结果并获取 200。

SELECT * FROM earthquakes WHERE milliseconds > 0 OFFSET 400 LIMIT 200

除此之外,还返回最大数量的结果,因此您可以在前端构建适当的 UI:

SELECT COUNT(1) FROM earthquakes WHERE milliseconds > 0

然后,您只需显示它和您的页面控件,一切就绪。

关于javascript - 如何使用 Ajax 调用从 MySql 中拆分最大的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584081/

相关文章:

javascript - Angular $watch 功能不适用于模型更改

javascript - 在函数对象中分配函数而不调用函数本身

php - 蛋糕PHP : how to get an array of elements from a web form

javascript - 缺少 .map 资源?

javascript - 如何禁用浏览器功能和快捷键进行全屏在线考试?

javascript - 如何滚动到剑道 ListView 控件的底部

php - 表单操作忽略了 Google Recaptcha

php - Woocommerce 中特定支付网关结账时的附加字段

jquery - 使用 jquery 提交表单时 Node.js 挂起

javascript - 一些关于导航的 Jquery/CSS 帮助