页面全部显示完毕后为什么会产生get请求报错,如何去除该报错
<script>
/* 封装函数,异步取数据*/
var loading = false; //是否正在加载中
var page = 1; //当前页
var noMore = false; //是否有下一页
// 获取新数据
function LoadData(callback) {
if (loading) return;
if (noMore) return;
loading = true;
$('#loading').show();
// 加载html片段
$.ajax({
url: '{% url 'mall:product_load_list' %}',
data: {
page: page
},
// 调用接口成功后
success: function (rest) {
// 添加html片段到内容区
$('#list').append(rest);
page++; // 页面增加1
loading = false;
$('#loading').hide();
// 如果有回调函数则调用
if (callback) {
callback()
}
}
})
}
// 下拉刷新
$(document.body).pullToRefresh().on('pull-to-refresh', function () {
$('#list').empty(); // 清空数据
page = 1;
noMore = false;
LoadData(function () {
$(document.body).pullToRefreshDone();
})
});
$(document.body).infinite(400).on('infinite', function () {
LoadData(); // 加载数据
})
LoadData(); // 默认加载第一页
view.py:
class ProductList(ListView):
""" 使用面向对象的方法实现商品的展示 """
# 每页放多少条数据
paginate_by = 7
# 模板位置
template_name = 'pro_list.html'
def get_queryset(self):
query = Q(status=constants.PRODUCT_STATUS_SELL,is_valid=1)
# 按名称搜索
name = self.request.GET.get('search','')
if name:
query = query & Q(name__icontains=name)
return Product.objects.filter(query)
我第一页加载完了所有数据,然后下滑刷新,为什么还会自动继续查找下一页导致报错。想了很久不知道该怎么修改代码。
正在回答 回答被采纳积分+1
解决了 我改进了一下,把page++从loadData函数中拿出来了,同时增加了对总页数的判断,这样就不会产生重复加载和加载超出页面范围了。不用给回答了
<script>
/* 封装函数,异步取数据*/
var loading = false; //是否正在加载中
var page = 1; //当前页
var noMore = false; //是否有下一页
// 获取新数据
function LoadData(callback) {
if (loading) return;
if (noMore) return;
loading = true;
$('#loading').show();
// 加载html片段
$.ajax({
url: '{% url 'mall:product_load_list' %}',
data: {
page: page
},
// 调用接口成功后
success: function (rest) {
// 添加html片段到内容区
$('#list').append(rest);
loading = false;
$('#loading').hide();
// 如果有回调函数则调用
if (callback) {
callback()
}
}
})
}
// 下拉刷新
$(document.body).pullToRefresh().on('pull-to-refresh', function () {
$('#list').empty(); // 清空数据
page = 1;
noMore = false;
LoadData(function () {
$(document.body).pullToRefreshDone();
})
});
$(document.body).infinite(200).on('infinite', function () {
if (page<{{ paginator.num_pages }}){
page++;
LoadData();
}
})
LoadData(); // 默认加载第一页
</script>
- 参与学习 人
- 提交作业 218 份
- 解答问题 3562 个
本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星