页面全部显示完毕后为什么会产生get请求报错,如何去除该报错

页面全部显示完毕后为什么会产生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)





http://img1.sycdn.imooc.com//climg/5ef8296f09672b1a12510212.jpg我第一页加载完了所有数据,然后下滑刷新,为什么还会自动继续查找下一页导致报错。想了很久不知道该怎么修改代码。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 慕妹6391370 2020-06-28 15:52:39

解决了 我改进了一下,把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>

  • 同学自己解决了问题,棒棒哒,继续加油。 祝学习愉快~~~~
    2020-06-29 10:03:13
提问者 慕妹6391370 2020-06-28 13:30:20

应该还是获取分页总页数的问题,我查了下官方文档的ListView,暂时没看到获取分页总条数的方法,如果有的话就好解决了

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师