我有一个大问题:在我的网站上会有一个页面,其中有一个表单,用户可以在其中选择日期和其他选项来查看世界上发生的地震。
问题是,例如,用户是否可以查看去年发生的地震。 此选项将返回一个非常大的数组,我认为这会减慢加载速度,并且浏览器可能会对文件有限制。
那么我该如何拆分大数组呢?
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)*200
或 400
。这将从结果 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/