0

祝你有美好的一天。

我正在做一个全选复选框来删除选定的帖子。我能够在 jquery 中获得结果,但我不确定如何使用该结果在我的 Codeigniter 控制器中进行处理。也许有人可以启发我。谢谢!

查看文件:

<input class="delete_selection" type="checkbox" name="delete_selection[]" value="1" />
<input class="delete_selection" type="checkbox" name="delete_selection[]" value="2" />
<input class="delete_selection" type="checkbox" name="delete_selection[]" value="3" />

<button id="delete_selected" name="delete_selected" class="btn btn-danger btn-small" value="" onClick="return confirm('Delete selected posts?')"><i class="icon-trash icon-white"> &nbsp; </i> Delete Selected</button>

查询:

    //GET SELECTED POSTS/PAGES FOR DELETION 
$("#delete_selected").click(function(event) {

    /* stop form from submitting normally */
    event.preventDefault();

    var values = new Array();

    $.each($('input[name="delete_selection[]"]:checked'), function() {

        var delete_selection = $(this).val()

        console.log(delete_selection);
    });
});

控制器:

    public function post_delete(){

        //HOW TO GRAB THE RESULT FROM THE JQUERY? 
        //I KNOW IT SHOULD BE IN AJAX BUT NOT QUITE SURE HOW TO DO IT.

        $id = $this->input->post('delete_selection');                  

        for( $i=0; $i<sizeof($id); $i++) :

            $this->posts_model->delete_post_selection($id[$i]);

        endfor;

        $data['message_success']    = $this->session->set_flashdata('message_success', 'You have successfully deleted your selected posts.');
        redirect('admin/posts/posts_list', $data);

}

模型:

    //MULTIPLE DELETE
function delete_post_selection($id) {

    $this->db->where_in('post_id', $id)->delete('posts');

    return true;
}
4

2 回答 2

0

您的想法是错误的,控制器不会“抓住”这些值。但是javascript会发布到控制器

假设您将 html 放入表单中,您可以执行以下操作:

看法:

<form action="/post_delete">
<input class="delete_selection" type="checkbox" name="delete_selection[]" value="1" />
<input class="delete_selection" type="checkbox" name="delete_selection[]" value="2" />
<input class="delete_selection" type="checkbox" name="delete_selection[]" value="3" />

<button id="delete_selected" name="delete_selected" class="btn btn-danger btn-small" value=""><i class="icon-trash icon-white"> &nbsp; </i> Delete Selected</button>
</form>

JS:

$('#delete_selection').click(function(e){
    if(!confirm('Delete?')) return;//ask user if they're sure

    //stop default form submitting from happening because 
    //we'll use ajax
    e.preventDefault();
    var form = $(this).closest('form');//get the parent form
    $.ajax({
        url: form.attr('action'),//get url to send it to
        type: "POST",
        data: form.serialize(),//get data from the form
        success: function(){
            //do something with success
        }
        error: function(){
            //do something with error
        } 
});

现在您可以通过访问 $_POST 尝试使用控制器中的数据

var_dump($_POST);

查看已发布的内容

于 2013-01-19T12:43:55.807 回答
0

我不确定这是否是正确的方式,因为它反复发布但到目前为止工作。

在我的 JS 中:

    //GET SELECTED POSTS/PAGES FOR DELETION 
$("#delete_selection").click(function(event) {
       if(!confirm('Delete selected posts?')) return false;//ask user if they're sure


    /* stop form from submitting normally */
    event.preventDefault();

    $.each($('input[name="delete_selection[]"]:checked'), function() {  

        $.ajax({
          type: "POST",
          url: 'post_delete_selection',
          data: 
            { selected: $(this).val() },
          success: function(data){              

            setTimeout(function () {
                window.location.href = window.location.href;
            }, 1000);

            $('#ajax_message').show().html('Successfully deleted.');
          },              
        });             

    }); 
});

我的控制器:

    public function post_delete_selection(){

    $selectedIds = $_POST['selected']; //THIS GRABS THE VALUES FROM THE AJAX
    $this->posts_model->delete_post_selection($selectedIds);         

}

我的模型:

    function delete_post_selection($selectedIds) {

    $this->db->where_in('post_id', $selectedIds)->delete('posts');

    return true;
}
于 2013-01-20T01:30:35.010 回答