javascript - 在通过所有页面获取数据后,如何循环排序来自 ajax 调用的数据?
问题描述
我无法通过循环对数组进行排序。它每 20 个元素部分工作(逐页排序)。
是否可以循环浏览网站中的所有页面?
获取所有数据(2000 项)可能需要大约 10 次 Ajax 调用。
在下面的代码中,我的查询通过 Ajax 获取数据,它工作正常:
<script language="javascript">
var current_page = 1, count = 100;
$(function(){
setTimeout(function(){
newSearch();
}, 0);
});
function newSearch() {
count = 0;
current_page = 1;
$('#main').html('');
doSearch();
}
function doSearch(){
$.ajax({
url:'https://live.ksmobile.net/live/boys?'
data: {
page_size: 900,
page_index: current_page
},
cache: false,
type: 'GET',
dataType: 'json',
success: function(r){
var max = $('#limit').val();
if (r.data.video_info.length < max) max =r.data.video_info.length;
for (index = 0; index < max; index++) {
var entry = r.data.video_info[index];
var level = parse Int(entry.level);
if ((level > $('#min').val()) && (level < $('#max').val())) {
count++;
var HTML = '<div class="entry ' + '"><h="' + entry + '">';
HTML += '<h3>Level: <span>' + entry.level + '</span> <span>' + entry.name + '' + '</span>id:<span>' + entry.heat;
HTML += '</div>';
$('#main').append(HTML);
以下排序功能中的问题,它仅适用于每个页面,而我需要在主页中按(级别)对所有元素进行排序。
function arr(a,b) {
return parseInt(a.level, 10) - parseInt(b.level, 10);
}
r.data.video_info.sort(arr);
}
if ((current_page < 100) && (count < $('#limit').val() )) {
current_page++;
setTimeout(function(){
doSearch();
},0);
}
}
});
}
我想将网站的所有页面(已排序)显示为我的主页的一部分。非常感谢您的帮助。
解决方案
不应在 javascript 中对分页数据进行排序。您需要编辑后端查询以从那里对其进行排序。此外,仅为排序而获取所有页面的数据是一个非常糟糕的主意,因为它会破坏分页的目的,并且会给您的 API 调用造成巨大的延迟,尤其是在您要获取大量数据的情况下。
推荐阅读
- python - Python 正则表达式在正则表达式测试器中工作,但在实际中不起作用
- c# - 无法映射 byte[] 或 byte[]?(可为空的字节 [])使用 AutoMapper ForCtorParam 函数
- python - Python:如何生成 2 的倍数的日期?
- python - 为处理来自 html(网页)的输入而开发的 Python 脚本未执行 shell 命令
- python-3.x - 提交后Django表单字段未设置值
- installation - 使用 pip 安装 dlib 时遇到问题
- python-3.x - pandas groupby 并用有序列扩大数据框
- javascript - TypeScript中函数类型参数的ESLint未使用变量规则
- asp.net - 如何从 Html.DropDownListFor onchange 调用控制器中的方法?
- firebase - Flutter:通过 FlutterFire 发送电子邮件验证码?