我试图用Ajax删除我的Rails模型的一个实例.
它发生在点击一个按钮,我的代码如下所示:
$("#button").click(function(){ $.ajax({ type: "POST",url: "/slot_allocations/" + slotallocation_id,dataType: "json",data: {"_method":"delete"},complete: function(){ $( "#SlotAllocationForm" ).dialog( "close" ); alert("Deleted successfully"); } }); });
我能够成功删除它,但是删除方法总是跟着一个发送请求到服务器来创建一个新的模型与现有的数据.这些是对服务器的请求.
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发生.
视图中有两个按钮:
<button id="button">Delete</button> <div class="actions"><%= f.submit %></div>
解决方法
假设您的按钮位于窗体内,单击它可能会提交该窗体,除了触发ajax请求.
您想要做的是防止单击提交表单的按钮的默认操作.
将function()参数更改为function(event),然后添加一个event.preventDefault()调用:
$("#button").click(function(event){ $.ajax({ type: "POST",complete: function(){ $( "#SlotAllocationForm" ).dialog( "close" ); alert("Deleted successfully"); } }); event.preventDefault(); });