Reputation: 116
I want to create pagination page into infinite scroll with filters. I'm using codeigniter. Pagination is working fine. When passing checkbox values(for filter) to controller it showing null.when clicking check box its not alert data. I had struggle for days. I will be so grateful if you can help me. Thank you.
Ajax
<script type="text/javascript">
$(document).ready(function() {
var total_record = 0;
var total_groups = <?php echo $total_data; ?>;
//brand is the checkbox value
var brand=check_box_values('brand');
$('#results').load("<?php echo base_url() ?>content/load_more",
{'group_no':total_record,'brand':brand}, function() {total_record++;});
$(window).scroll(function() {
if($(window).scrollTop()+$(window).height() >= $('#fooerdivid').offset().top)
{
if(total_record <= total_groups)
{
loading = true;
$('.loader_image').show();
$.post('<?php echo site_url() ?>content/load_more',{'group_no': total_record,'brand':brand},
function(data){
if (data != "") {
$("#results").append(data);
$('.loader_image').hide();
total_record++;
}
});
}
}
});
//For passing checkbox values
function check_box_values(check_box_class){
var values = new Array();
$("."+check_box_class+":checked").each(function() {
values.push($(this).val());
});
return values;
}
});
</script>
public function load_more()
{
$group_no = $this->input->post('group_no');
$brand = $this->input->post('brand');
$content_per_page = 5;
$start = ceil($group_no * $content_per_page);
$all_content = $this->content_model->get_all_content($start,$content_per_page,$brand);
if(isset($all_content) && is_array($all_content) && count($all_content)) :
foreach ($all_content as $key => $content) :
echo '<li>'.$content->title.'</li>';
echo '<p>'.$content->description.'</p>';
endforeach;
endif;
}
Model
public function get_all_content($start,$content_per_page,$brand)
{
$sql = "SELECT * FROM content_information LIMIT $start,$content_per_page";
if(isset($brand))// your condition here
{
$this->db->where_in('brand', $brand);
}
$result = $this->db->query($sql)->result();
return $result;
}
Upvotes: 2
Views: 629
Reputation: 3496
Try this code. On document.ready function call the function to load first data. On click event of checkboxes you need to call the function again to get the next data.Also on window.scroll you have to load the data.
$(document).ready(function() {
load_content();
function load_content(){
var total_record = 0;
var total_groups = <?php echo $total_data; ?>;
//brand is the checkbox value
var brand=check_box_values('brand');
$('#results').load("<?php echo base_url() ?>content/load_more",
{'group_no':total_record,'brand':brand}, function() {total_record++;});
}
//For passing checkbox values
function check_box_values(check_box_class){
var values = new Array();
$("."+check_box_class).each(function() {
if($(this).is(':checked')){
values.push($(this).val());
}
});
return values;
}
$(".brand").click(function(){
load_content();
});
$(window).scroll(function() {
if($(window).scrollTop()+$(window).height() >= $('#fooerdivid').offset().top)
{
var total_record = 0;
var total_groups = <?php echo $total_data; ?>;
//brand is the checkbox value
var brand=check_box_values('brand');
if(total_record <= total_groups)
{
loading = true;
$('.loader_image').show();
$.post('<?php echo site_url() ?>content/load_more',{'group_no': total_record,'brand':brand},
function(data){
if (data != "") {
$("#results").append(data);
$('.loader_image').hide();
total_record++;
}
});
}
}
});
});
Please ignore syntax errors as I have not tested the code but you will get an idea from this.
Upvotes: 3