Javascript 从<;执行删除请求;a>;标记而不构造表单?
是否有任何方法可以在单击时强制Javascript 从<;执行删除请求;a>;标记而不构造表单?,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,是否有任何方法可以在单击时强制执行删除请求,而不是常规的GET “Rails”的方法是动态生成一个标记,该标记添加适当的参数,以便将其路由到正确的位置,但是对于这样一个简单的任务,我不太喜欢太多DOM操作 我想走这样的路线: $("a.delete").click(function(){ var do_refresh = false; $.ajax({ type: "DELETE", url: "my/path/to/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内容是否有效,因为这只是理论上的。有什么办法吗
注意:请不要建议我使用rails
:method=>:delete
onlink\u to
,因为我试图在很多方面避免使用rails帮助程序,因为它们会用刺眼的javascript污染DOM。我希望将此解决方案放入一个外部JS文件中,并根据需要包括在内。根据文档:
允许使用DELETE方法,但并非所有浏览器都支持该方法,因此您应该查看以下内容:
我就是这么做的:
$("a.delete").live('click', function() {
$.post(this.href, "_method=delete", function(data) {
//do refresh
});
return false;
})
但我真的不知道哪些浏览器支持它,哪些不支持。我在mac上用Firefox 2和3.6、safari 3和chrome beta 5.0.375.70对它进行了测试,它可以正常工作。你可以使用插件,它可以满足你的ajax请求,你所要做的就是在你的HTML标签上添加几个额外的属性
例如:
HTML
<button class="delete" data-target="my/path/to/delete" data-method="DELETE" data-disabled="true">Delete Article</button>
我知道它可以作为AJAX使用。我想知道是否有一种非AJAX的方式来执行删除请求,而不是像rails助手那样以动态形式包装请求。您可以将该方法设置为delete,但它只适用于Html5,因此它可能会导致您在较旧的浏览器中出现一些问题。rails 3使用不引人注目的javascript来实现这一点。我自己不知道所有的细节,但这里有一个开始:您使用jQuery设置rel=nofollow吗?提醒一下:蜘蛛不会运行你的JS,所以他们不会尊重你。@Andrew:非常感谢!:)我完全忘记了spider不会解析JS。将改为在标记中使用。
$(".delete").restintag(optionsObj, function() {
do_refresh = true
},
function() {
alert("some error happened");
});