标签执行DELETE请求而不构造表单?

是否有任何方法可以强制在单击时执行删除请求而不是常规GET

“Rails”方式是动态生成一个

标签,它添加适当的参数以便它被路由到正确的位置,但是我不太喜欢那么多DOM操作来完成这么简单的任务。

我想过去的路线:

 $("a.delete").click(function(){ var do_refresh = false; $.ajax({ type: "DELETE", url: "my/path/to/delete", success: function(){ do_refresh = true; }, failure: function(){ alert("There is an error"); } }); return do_refresh; //If this is false, no refresh would happen. If it //is true, it will do a page refresh. }); 

我不确定上面的AJAX是否会起作用,因为它只是理论上的。 有没有办法解决这个问题?

注意:
请不要建议我在link_to上使用rails :method => :delete ,因为我试图在许多意义上使用rails帮助器,因为它们使用突兀的javascript污染你的DOM。 我希望将此解决方案放在外部JS文件中并根据需要包含在内。

根据文件:

http://api.jquery.com/jQuery.ajax/

允许使用DELETE方法但不支持所有浏览器,因此您应该看一下:

大多数Web浏览器中是否提供PUT,DELETE,HEAD等方法?

这是我做的:

 $("a.delete").live('click', function() { $.post(this.href, "_method=delete", function(data) { //do refresh }); return false; }) 

但我真的不知道哪些浏览器支持它,哪些不支持。 我使用Firefox 2和3.6,safari 3和chrome beta 5.0.375.70在Mac上测试它,它的工作原理。

您可以使用RESTInTag插件,它会为您执行ajax请求所有您需要做的是为HTML标记添加一些额外的属性

例:

HTML

  

JavaScript的

 $(".delete").restintag(optionsObj, function() { do_refresh = true }, function() { alert("some error happened"); });