0

我正在尝试构建一个可以使用 AJAX 将数据提交到数据库的系统。我可以做到这一点,而且效果很好。

但是,在尝试删除记录时,我正在努力做类似的事情。我是使用 Ajax 的新手,尤其是使用 CakePHP,而且我发现整个概念非常令人难以抗拒。我可以只使用纯 HTML 删除记录,将 ID 传递给控制器​​,然后重定向到原始页面。这只是我正在努力解决的 Ajax 问题,显然使用 Ajax 会带来巨大的好处。

这是我认为的代码:

    <table>
        <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Content</th>
            <th>&nbsp;</th>
        </tr>
        <?php foreach ($testing as $test) { ?>
            <tr>
                <td><?php echo $test['Testtable']['id']; ?></td>
                <td><?php echo $test['Testtable']['title']; ?></td>
                <td><?php echo $test['Testtable']['content']; ?></td>
                <td><?php echo $this->Html->link('Delete', array('controller' => 'testing', 'action'=>'delete_ajax_data', $test['Testtable']['id']), null, 'Are you sure?' );?></td>
            </tr>
        <?php } ?>
    </table>

这是我在控制器中的代码:

function delete_ajax_data($id) {
    $this->autoRender = false;
    $this->layout = 'ajax';

    $this->loadModel('Testtable');

    $this->Testtable->delete($id);
    $this->redirect('/test-area/');
}

这是迄今为止我的 Ajax 代码:

$(document).ready(function(){

    $('a.confirm_delete').click(function(event){
        event.preventDefault();

        $.ajax({
            url:'/testing/delete_ajax_data',
            type:'POST',
            data: $("a").attr("href").serialize()

        });     
    });

});

为这方面的任何帮助干杯,它开始让我感到压力!

编辑:我使用的代码是错误的,现在我已经包含了正确的代码。虽然还是不行!

4

1 回答 1

0

我已经想通了。我在代码中有几个问题。

第一部分在视图中。我没有使用 CakePHP 的链接构建器,而是使用了 HTML 链接:

<td><a href="id=<?php echo $test['Testtable']['id']; ?>" class="deleteajax">Delete</td>

然后,对于 Ajax,我使用了以下代码:

$('a.deleteajax').click(function(event){
event.preventDefault();

var answer = confirm("Delete this record?")
if (answer){
    $.ajax({
        url:'/testing/delete_ajax_data/',
        type:'GET',
        data: $(this).attr("href")

    });
}

return false;  
});

新的 Ajax 代码使用 GET 而不是 POST,它将我要删除的记录的 ID 作为 ID 变量返回,然后可以在控制器中使用,如下所示:

function delete_ajax_data() {
    $this->autoRender = false;
    $this->layout = 'ajax';

    $id = $_GET['id'];

    $this->loadModel('Testtable');

    $this->Testtable->delete($id);
}

可能有比我所做的更好的方法来做到这一点,但是对于我正在做的事情来说,这非常有效。

于 2012-04-12T11:50:36.523 回答