Ajax请求传递变量并向DB请求WHERE =变量

时间:2016-11-24 13:20:02

标签: php ajax codeigniter

这是我的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;
}
}

在此模型中,我遗漏了WHEREWHERE过滤器与$permaData相同。

每个过滤器都应将$Offset重置为0并为该内容运行数据库。

permaData以" *"开头在选择任何过滤器之前。

1 个答案:

答案 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子句。