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陈述上放轻松。如果您发现自己过度使用它们,可能是因为您应该使用嵌入式 PHP 编写 HTML,而不是使用嵌入式 HTML 编写 PHP。此外,在 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的语法进行记录删除,请适应Active Record。该代码未经测试,它是在 SO 编辑器中编写的 - 但这是我处理事情的方式。

于 2012-09-07T17:13:52.800 回答