当前位置: 首页 > 知识库问答 >
问题:

以select选项为主的Ajax分页在codeigniter中不起作用

罗凯
2023-03-14

这是我的选择选项:

<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();
}

在我的第一个视图中,如果我选择该选项,它将显示基于所选选项的活动列表

我把分页的ajaxurl,比如果我点击分页,我所有的activity_list将消失,选择的选项将返回到选择活动。

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

共有1个答案

竺鸿骞
2023-03-14

试试下面的方法。

在控制器中,使用活动id创建分页基本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函数中添加接收操作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后,将其与视图数据一起发送回来,并检查输入控制器是否设置,而不是选择该值。

 类似资料:
  • 问题内容: 我正在使用selenium进行Web应用程序自动化。 我停留在一点上,我正在执行一些操作,例如单击链接,并且为此使用:- [ 注意 :对于正在使用的每个可单击元素,此方法,因为可单击元素可能被隐藏或在网页中不可见]但是此方法不起作用,因为 我正在使用下面的代码单击选择选项之一: 但没有任何反应,也没有给出任何错误/异常。 - 编辑开始 - 但是如果我不使用它就可以正常工作: - 编辑结

  • 不明白为什么这个突然停止工作。网站是:http://www.revival.tv/sermons/topical-messages/ 当它进入第二页时,它只使用了归档模板:(不确定为什么这样做,它在去年工作得很好。想知道Wordpress更新是否做到了这一点,我们只是注意到了它。 我使用以下的分页: 然后改写布道:

  • 问题内容: 我已经设置了’cache:true’选项,但是该缓存似乎仅在IE中有效,而在Firefox和Chrome中不起作用。这是一个已知问题吗? 问题答案: 该选项不是jQuery维护的特殊缓存,因此可能有点用词不当。 将时间戳附加到所请求的URL,因此 强制 浏览器获取新副本,这更像是一个缓存破坏者。 不执行任何操作 ,将保留本机浏览器缓存以执行此处将要执行的任何操作。 这根本不是jQuer

  • 问题内容: 我将datepicker附加到全局脚本文件中的输入中,如下所示: 在特定页面上,模态对话框(还有jquery ui)中有输入(将与datepicker一起使用),我通过$ .load()调用该页面并注入其他页面的div中。 上面的代码对于其他页面中的静态输入非常有效,但对于上面的scenerio,它显示的是datepicker对话框很好,但是当我单击一个日期时,它会抛出错误(f未定义)

  • 我在datatable中使用了基于ajax jquery php的多选择选项过滤。它正在正确过滤记录,但更改选择选项过滤后,将显示一条警报消息 注:- (1) 数据表下方的计数未正确显示。 (2)显示一条警报消息。 这是有记录的数据表 选择选项后,将显示一条错误警报消息。 超文本标记语言代码:- Ajaxu公司搜索。php jQuery/Ajax代码:-

  • 问题内容: 在我的Web应用程序中使用codeigniter。我正在尝试使用base_url()函数,但显示为空结果。我也通过自动加载文件使用了自动加载帮助器,但是它似乎也不起作用。我也定义了基本常数,但是都没有用。 问题答案: 为了使用,您必须首先加载URL Helper。可以在第67行(或第67行附近)完成此操作: 或者,手动: 加载后,请切记不要隐式打印或回显任何内容,而是返回要打印的值: