12

RailsモデルのインスタンスをAjaxで削除しようとしています。

ボタンをクリックするだけで発生し、私のコードは次のようになります。

$("#button").click(function(){ 
    $.ajax({
        type: "POST",
        url: "/slot_allocations/" + slotallocation_id,
        dataType: "json",
        data: {"_method":"delete"},
        complete: function(){
            $( "#SlotAllocationForm" ).dialog( "close" );
            alert("Deleted successfully");
        }
    });
});

正常に削除できますが、このdeleteメソッドの後には常にpost、既存のデータを使用して新しいモデルを作成するようサーバーに要求が続きます。これらはサーバーへのリクエストです。

1. POST http://localhost:3000/slot_allocations/1009 [HTTP/1.1 204 No Content  57ms]    
2. POST http://localhost:3000/slot_allocations [HTTP/1.1 302 Found  111ms]
3. GET http://localhost:3000/slot_allocations/1010 [HTTP/1.1 200 OK  185ms]

#1私のボタンをクリックすると起こります。#2しかし、その理由はよくわかりません#3

ビューには2つのボタンがあります。

<button id="button">Delete</button>
<div class="actions"><%= f.submit %></div>
4

2 に答える 2

23

ボタンがフォーム内にあると仮定すると、ボタンをクリックすると、ajaxリクエストの実行に加えて、おそらくそのフォームが送信されます。

あなたがしたいのは、フォームを送信しているボタンをクリックするというデフォルトのアクションを防ぐことです。

function()パラメータをに変更してから、呼び出しfunction(event)を追加します。event.preventDefault()

$("#button").click(function(event){ 
    $.ajax({
        type: "POST",
        url: "/slot_allocations/" + slotallocation_id,
        dataType: "json",
        data: {"_method":"delete"},
        complete: function(){
            $( "#SlotAllocationForm" ).dialog( "close" );
            alert("Deleted successfully");
        }
    });
    event.preventDefault();
});
于 2013-02-17T17:58:19.243 に答える