是否有任何方法可以强制在单击时执行删除请求而不是常规GET ?
GET
“Rails”方式是动态生成一个
我想过去的路线:
$("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文件中并根据需要包含在内。
link_to
:method => :delete
根据文件:
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
Delete Article
JavaScript的
$(".delete").restintag(optionsObj, function() { do_refresh = true }, function() { alert("some error happened"); });