JQuery прокручивает бесконечность загрузки из базы данных в codeigniter - PullRequest
0 голосов
/ 25 марта 2019

ореол всех .. я не очень разбираюсь в JQuery. сейчас я делаю некоторую работу в Codeigniter. Я хочу загрузить данные с помощью прокрутки. я предел отображения данных составляет 8. так что, если мы прокручиваем вниз. я буду загружать следующие 8 данных. но сейчас. он просто загружает бесконечность данных ... просто зацикливает данные из предыдущего.

я установил свой файл js с помощью этого

var slider = $('.contents').bxSlider({
    pager:false,
    controls:false,
    onSlideBefore: function($slideElement, oldIndex, newIndex){
      slideChange(newIndex);
      category_id = $('.active .category_id').val();
      if (!$(".active").hasClass("loaded")) {
        $.ajax({
          type : "POST",
          url : "/ajax/get_products_list_base",
          dataType : "json",
          data : {'category_id': category_id},
          success : function(res) {
            if(res.result) {
              $('.active').addClass('loaded');
              $('.'+category_id).append(res.data);
              $.colorbox.remove();
              $('.product_ajax').colorbox({
                onLoad:function(){
                }
              });
              scroll_load(category_id);
            } else {
              request = false;
            }
          },
          error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log("XMLHttpRequest : " + XMLHttpRequest.status);
            console.log("textStatus     : " + textStatus);
            console.log("errorThrown    : " + errorThrown.message);
            console.log("読み込み失敗");
            $('.active').addClass('loaded');
          }
        });
      }
    }
  });


function scroll_load(category_id) {
  var thisOffset;

  thisOffset = $('.list_'+category_id).find('.product_item').last().offset().top;

  $('.contents_' + category_id).on('scroll', function(){
    if(thisOffset - $(this).offset().top < $(this).scrollTop() + this.clientHeight){
      //if (request) {
        product_number = $('.' + category_id + ' .product_item').length;
        $.ajax( {
          type : "POST",
          url : "/ajax/get_products_for_list",
          dataType : "json",
          data : {'category_id': category_id,
            'product_number': product_number
          },
          success : function(res) {
            if(res.result) {
              $('.list_'+category_id).append(res.data);
              $.colorbox.remove();
              $('.product_ajax').colorbox({
                onLoad:function(){
                }
              });
            }
          },
          error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log("XMLHttpRequest : " + XMLHttpRequest.status);
            console.log("textStatus     : " + textStatus);
            console.log("errorThrown    : " + errorThrown.message);
            console.log("読み込み失敗");
          }
        });
      //}
    }
  });
}

и контроллер с этим

  public function get_products_list_base() {
        $post = $this->input->post();
        $category_id = $post['category_id'];
        $limit = 8;
        $this->load->model('Products');
        $this->load->model('Categories');
        $data['category'] = $this->Categories->get_category_by_categoryid($category_id);
        $data['products'] = $this->Products->get_all_products_for_products_list_by_category_id($category_id, $limit);
        $data['branch_id'] = $this->session->userdata('branch_account')['branch_id'];
        if (!empty($data['products'])) {
            $res = $this->load->view('products/_list_parts.html', $data, true);
            $return['result'] = true;
            $return['data'] = $res;
        } else {
            $return['result'] = false;
        }
        $this->output
             ->set_content_type('application/json')
             ->set_output(json_encode($return));
    }

public function get_products_for_list() {
        $post = $this->input->post();
        $category_id = $post['category_id'];
        $limit = 8;
        $product_number = $post['product_number'];
        $this->load->model('Products');
        $data['products'] = $this->Products->get_all_products_for_products_list_by_category_id($category_id, $limit, $product_number);
        $data['branch_id'] = $this->session->userdata('branch_account')['branch_id'];
        if (!empty($data['products'])) {
            $res = $this->load->view('products/_list_block.html', $data, true);
            $return['result'] = true;
            $return['data'] = $res;
        } else {
            $return['result'] = false;
        }
        $this->output
             ->set_content_type('application/json')
             ->set_output(json_encode($return));
    }

как я могу исправить отображение данных загрузки с этим ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...