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 コードは、POST の代わりに GET を使用します。これは、削除するレコードの 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 に答える