【问题标题】:Pagination in Ajax with select option as main doesn't work in codeigniterAjax 中的分页与选择选项作为主要在 codeigniter 中不起作用
【发布时间】:2016-06-30 08:55:17
【问题描述】:

这是我的选择:

<select id="slc_action" class="form-control" style="margin:0;">
    <option value="0"> Select Activity</option>
    <?php foreach($admin_action as $row){
        echo "<option  value='" . $row['action_id'] . "''>" . $row["event"] . "</option>";
     }?>
</select>

这是我的 jquery :

<script>
$(document).ready(function() {
    $("#slc_action").change(function(){
        var action_id = $("#slc_action").val();
        jQuery.ajax({
            type: 'POST',
            url: '/ADMIN/ajax/activity_list',
            dataType: 'html',
            data: {action_id: action_id
            },
            success: function(res) {
                if (res)
                {
                    $("#activity_list").html(res);
                }
            }
        });
    });
});
</script>

这是我的 ajax 调用控制器:

function activity_list(){

    $action_id = $this->input->get("action_id");
    $config = array();
    $config["base_url"] = "/ADMIN/Account/admin_activity/";
    $config["total_rows"] = $this->Ajax_m->m_count_activity($action_id);
    $config["per_page"] = 10;
    $config["uri_segment"] = 5;

    //config for bootstrap pagination class integration
    $config['full_tag_open'] = '<ul class="pagination">';
    $config['full_tag_close'] = '</ul>';
    $config['first_link'] = false;
    $config['last_link'] = false;
    $config['first_tag_open'] = '<li>';
    $config['first_tag_close'] = '</li>';
    $config['prev_link'] = '&laquo';
    $config['prev_tag_open'] = '<li class="prev">';
    $config['prev_tag_close'] = '</li>';
    $config['next_link'] = '&raquo';
    $config['next_tag_open'] = '<li>';
    $config['next_tag_close'] = '</li>';
    $config['last_tag_open'] = '<li>';
    $config['last_tag_close'] = '</li>';
    $config['cur_tag_open'] = '<li class="active"><a href="#">';
    $config['cur_tag_close'] = '</a></li>';
    $config['num_tag_open'] = '<li>';
    $config['num_tag_close'] = '</li>';

    $config['num_links'] = 10;

    $this->pagination->initialize($config);
    $page = ($this->uri->segment(5)) ? $this->uri->segment(5) : 0;
    $data["no"]=$page;
    $data["activity_list"] = $this->Ajax_m->m_get_activity($action_id,$config["per_page"], $page);
    $data["links"] = $this->pagination->create_links();
    $this->load->view("/ADMIN/".country_code."/Admin_activity_list",$data);
}

这适用于 ajax 模型:

function m_get_activity($action_id,$limit,$start){
    $this->db->limit($limit,$start);
    $this->db->select("admin_name,action_id,querylog,time,");
    $this->db->from("uhd_admin_activity");
    $this->db->where("action_id=",$action_id);
    $query = $this->db->get();
    return $query->result_array();
}

function m_count_activity($action_id){
    if($action_id != null) $this->db->where("action_id = '$action_id'" , NULL, FALSE);

    $this->db->from("uhd_admin_activity");

    return $this->db->count_all_results();
}

该代码在我的第一个视图中,如果我选择该选项,它将根据所选显示activity_list。

我将分页放在那个 ajax url 上,如果我点击分页,我所有的 activity_list 都将消失,所选选项将返回到 Select Activity。

你们知道怎么解决这个问题吗?

【问题讨论】:

  • 把你的控制器代码也放上去。
  • @RajJagani 我的控制器代码太长。
  • 只需发布您的分页配置设置
  • 你想在活动列表出现后进行ajax分页,否则它将刷新整个页面,因为codeigniter直到现在还没有提供任何ajax分页。
  • 您是否验证过action_id 被一个值填充?

标签: php jquery ajax codeigniter pagination


【解决方案1】:

试试下面的方法。

在你的控制器中使用你的activity_id创建分页base_url

$action_id = $this->input->post("action_id"); //please use post method as your are posting data using POST in your ajax call
 $config = array();
 $config["base_url"] = "/ADMIN/Account/admin_activity/".$action_id;

现在在您的 admin_activity 函数中添加用于接收 action_id 的参数

function admin_activity($activity_id,$offset) {
    //here $offset will be your page segment no.
   //pass the activity argument along with your view data
   $data['post_activity_id] = $activity_id;
   $this->load->view('view_name',$data);
}

进入你的视野

<select id="slc_action" class="form-control" style="margin:0;">
    <option value="0"> Select Activity</option>
    <?php foreach($admin_action as $row){
        if(isset($post_activity_id) && $post_activity_id == $row['action_id']) {
            echo "<option selected="selected" value='". $row['action_id'] . "''>" . $row["event"] . "</option>";
        } else {
            echo "<option value='" . $row['action_id'] . "''>" . $row["event"] . "</option>";
        }
     }?>
</select>

所以,基本上您只需使用 action_id 创建分页,并在控制器函数中接收到该 id 后将其与视图数据一起发送回来,并检查您的输入控制器是否设置了该值而不是选中该值。

【讨论】:

  • 问题功能管理活动,如果显示选择选项。而不是如何获取$activity_id的值?
  • 我没有得到你在问什么??
  • 在你的第二个建议function admin_activity($activity_id,$offset) $activity_id 来自哪里?因为我收到一条错误消息 Undefined variable: activity_id
  • $activity_id 与您生成的 pagination url* 绑定,请参阅$config["base_url"] = "/ADMIN/Account/admin_activity/".$activity_id; 行
猜你喜欢
  • 2016-04-21
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 2013-02-18
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多