这是我的AJAX电话:
function ck_loader() {
row_count = $('.grid-item').length || 0;
$.ajax({
type: "POST",
url: baseURL + "welcome/load_more",
data: {offset: row_count, numbdata: permaData},
datatype: 'json',
success: function (response) {
if (response === "") {
$grid.packery();
}
} else {
var $response = $(response);
$(".grid").append($response);
$grid.packery( 'addItems', $response);
$grid.packery();
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
//alert("ERROR");
}
});
so offset计算此刻可见的元素(行)数量,它有助于控制数据库的偏移量(每次调用加载15个元素)
numbdata: permaData
是我保存过滤器选择的变量,所以我的菜单有一个过滤器选择,来自那里的数据保存在一个变量中(当有人按下"视频&#34 ;过滤,它保存"视频"在permaData
)
它连接到:
public function load_more()
{
$offset = $this->input->post('offset');
if($offset)
{
$new_rows = $this->postovi_model->get_next_10($offset);
if(isset($new_rows))
{
$data['users'] = $new_rows;
//this will return (echo) html to the ajax success function
//CI takes care of making the correct response headers - sweet
$this->load->view('user_rows_view', $data);
}
else
{
echo ""; //return an empty string
}
}
}
此PHP脚本中包含一个模型:
public function get_next_10($offset = 0)
{
$this->db->limit(15, $offset);
$this->db->order_by('date', 'asc');
$query = $this->db->get("postovi");
return $query->num_rows() > 0 ? $query->result_array() : NULL;
}
}
在此模型中,我遗漏了WHERE
,WHERE
过滤器与$permaData
相同。
每个过滤器都应将$Offset
重置为0并为该内容运行数据库。
permaData
以" *"开头在选择任何过滤器之前。
答案 0 :(得分:1)
更改模型函数以获取两个参数而不是一个:
public function get_next_10($offset = 0, $numbdata = false)
然后只需称它为:
$new_rows = $this->postovi_model->get_next_10($offset, $numbdata);
虽然numbdata
会是(你通过AJAX调用传递它):
$numbdata = $this->input->post('numbdata');
最后,只需在模型中添加WHERE子句。