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>

JQuery:

    //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

繰り返しPOSTするため、これが正しい方法であるかどうかはわかりませんが、これまでのところ作業を行っています。

私の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 に答える