Playframework Play framework 2.2.1通过ajax删除记录,方法:删除
在阅读Play2.2.1文档之后,我可以看到,没有处理HTTP delete方法的内置机制吗?(nor PUT?)。 我如何理解我可以通过AJAX调用模拟delete方法,所以我尝试了以下方法: //index.scala.htmlPlayframework Play framework 2.2.1通过ajax删除记录,方法:删除,playframework,playframework-2.0,Playframework,Playframework 2.0,在阅读Play2.2.1文档之后,我可以看到,没有处理HTTP delete方法的内置机制吗?(nor PUT?)。 我如何理解我可以通过AJAX调用模拟delete方法,所以我尝试了以下方法: //index.scala.html @users.map { user => ... <td> <a href="#" class="delete-user" data-id="@user.getId()"> Delete </td> ... } //ja
@users.map { user =>
...
<td> <a href="#" class="delete-user" data-id="@user.getId()"> Delete </td>
...
}
//java(控制器)
那么这是正确的方法吗?或者我误解了/忽略了文档?您的做法完全正确。我可能只提到一个小的改进,您应该能够做到这一点:
$.ajax(
jsRoutes.controllers.Users.delete(id)
).done(function() {
$that.closest('tr').remove();
});
JavaScript路由器方便地返回一个对象,该对象包含您正在读取的url
属性,但它还包含一个type
属性,如果您的路由配置为DELETE
路由,则该属性的值为DELETE
。在我的应用程序中,我通常会编写一个帮助器方法,允许我轻松地将其他属性添加到jQuery AJAX请求调用中,例如:
function ajax(route, params) {
return $.ajax($.extend(params, route))
}
然后我可以做这样的事情:
ajax(jsRoutes.controllers.Users.delete(id), {
headers: { "Auth-Token": "foobar" }
}).done( ... )
您也可以直接使用路由对象进行呼叫,例如
jsRoutes.controllers.Users.delete(id).ajax( {
done: function ( data ) {
$that.closest('tr').remove();
}
});
Rails并不以您理解的方式真正支持
PUT
和DELETE
。相反,它使用POST
并使用隐藏字段模拟其他方法。所以,是的,你走在正确的轨道上。我是在框架支持的背景下说的。
ajax(jsRoutes.controllers.Users.delete(id), {
headers: { "Auth-Token": "foobar" }
}).done( ... )
jsRoutes.controllers.Users.delete(id).ajax( {
done: function ( data ) {
$that.closest('tr').remove();
}
});