2016-11-24 101 views
0

这是我的AJAX调用:Ajax请求传递变量,并要求DB的WHERE =变量

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"); 

    } 
}); 

所以偏移计算元素是目前visable(行)的数量,并有助于控制的偏移数据库(加载每个呼叫15个元素)

numbdata: permaData是一个变量,我保存过滤器选择,所以我的菜单有一个过滤器选择,并从那里的数据保存在一个变量(当有人按“视频”过滤器,它节省了“视频”内的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在选择任何过滤器之前以“*”开头。

+0

因为很难阅读,所以我对代码进行了重新缩进。这带来了一些与匹配大括号等语法错误。这是你复制和粘贴的真实代码?你是否看到任何控制台错误? – moopet

+0

没有更多的垃圾无处不在,但并不想放置100行的JavaScript添加类和东西... – FTWwings

回答

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

+0

这也将重置偏移计数器,如果$ numbdata更改? – FTWwings

+0

它返回空查询:/我的意思是它回应===“” – FTWwings

+0

然后,一些数据是不是你所期望的,检查它。 – Shomz