0

私は動作しているcodeigniterコントローラーとビューを持っており、レコードを正常に削除します。ページのリロードを回避するために、ajax --jqueryを使用してこれを実行したいと思います。確かに、ユーザーがレコードを削除することを確信している場合は、ユーザーにプロンプ​​トを表示する必要があります。

どこから始めればよいかわからないので、コードスニペットをいただければ幸いです。

コントローラからのコードは次のとおりです。

public function deleteUser()
    {
        $this->load->model('backOfficeUsersModel');
        $deleteWhat = array(
            'dpage' => $this->input->post('dpage'),
            'rid'   => $this->input->post('rid')
        );
        $this->backOfficeUsersModel->delete($deleteWhat['rid']);
        redirect($deleteWhat['dpage']);
    } // end of function deleteUser

これが私が今持っている見解です:(簡単にするためにphpコードだけが提示されています)

foreach ($users as $key => $user) {
                            echo form_open('backOfficeUsers/deleteUser');
                            echo form_hidden('dpage', 'backOfficeUsers/displayAllUsers');
                            echo form_hidden('rid', $user['userid']);
                            echo "<tr>";
                            echo "<td>";

                            $data = array(
                                'name' => 'row_sel',
                                'id' => $user['userid'],
                                'value' => $user['userid'],
                                'class' => 'select_row'
                            );

                            echo form_checkbox($data);

                            //echo "<input type='checkbox' class='select_row' name='row_sel'>"; 
                            echo "</td>";
                            echo "<td>" . $user['userid'] . "</td>";
                            echo "<td>" . $user['firstname'] . " " . $user['lastname'] . "</td>  ";
                            echo "<td>" . $user['username'] . "</td>  ";
                            echo "<td><a href=mailto:" . $user['email'] . ">" . $user['email'] . "</td>  ";
                            echo "<td style='text-align: center;'>";
                            echo anchor("backOfficeUsers/displayEditUserForm/$user[userid]/", "<i class=splashy-pencil></i>", "class=ext_disabled");     
                            echo "</td>";
                            echo"<td style='text-align: center;'>";
                            $confirm = "class='splashy-remove' style='border:none; width:16px; height:16px;'";

                            echo form_submit('submit', '', $confirm);
                            echo"</td></tr>";

                            echo form_close();
                        }

ヘルプ(コードスニペット、またはいくつかの例へのリンク)は深く感謝されます

よろしく、ゾラン

4

1 に答える 1

3

どうぞ、echo声明を気楽に行ってください。それらを過度に使用していることに気付いた場合は、おそらく、埋め込みHTMLを使用したPHPではなく、埋め込みPHPを使用してHTMLを作成する必要があるためです。また、SOに質問を投稿するときは、回答者を混乱させるだけの余分な綿毛を削除してください。あなたのコードには、問題の核心に達しない多くのがらくたがあります。

ゼロから、これが私が使用するHTMLスキャフォールドです:

<table>
    <thead>
        <tr>
            <th>Username</th>
            <th>Actions</th>
        </tr>
    </thead>
<tbody>
    <? foreach($users as $uK => $uV):?>
        <tr>
            <td><?= $uV['username']?></td>
            <td><a class='deleteUser' href='backOfficeUsers/deleteUser/<?= $uV["id"]?>'>Delete</a></td>
        </tr>        
    <? endforeach;?>
</tbody>

次に、jQuery:

<script type='text/javascript'>
    $(document).ready(function(){
        $(".deleteUser").click(function(e){
            $this  = $(this);
            e.preventDefault();
            var url = $(this).attr("href");
            $.get(url, function(r){
                if(r.success){
                    $this.closest("tr").remove();
                }
            })
        });
    });
</script>

そしてコントローラー:

class Backofficeuser extends CI_Controller{
    function __construct(){
        ...
    }

    function deleteUser($id){
        $u = new User($id);
        if($u->delete()) return json_encode(array("success" => true));            
    }

}

ここでは、レコードの削除にDatamapperの構文を使用しました。アクティブレコードに適応してください。コードはテストされていません。ここではSOエディターで記述されていますが、これが私が物事を進める方法です。

于 2012-09-07T17:13:52.800 に答える