Javascript Rails使用AJAX和POST形成<;输入类型=提交>;
这个问题与我的问题非常相似,但我的问题并没有完全解决 所以我有一个有很多按钮的表单。每个按钮都有一条不同的提交消息:使用railsJavascript Rails使用AJAX和POST形成<;输入类型=提交>;,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,这个问题与我的问题非常相似,但我的问题并没有完全解决 所以我有一个有很多按钮的表单。每个按钮都有一条不同的提交消息:使用railssubmit\u标记helper生成类似HTML的内容 <!-- AJAX buttons --> <input type="submit" value="Preview" name="commit"> <input type="submit" value="Send me a preview" name="commit"> <
submit\u标记
helper生成类似HTML的内容
<!-- AJAX buttons -->
<input type="submit" value="Preview" name="commit">
<input type="submit" value="Send me a preview" name="commit">
<!-- POST buttons -->
<input type="submit" value="Send to me" name="commit">
<input type="submit" value="Send to all" name="commit">
表单最初不是AJAX,但我想通过AJAX和最上面的两个按钮提交表单。但是(在前面的问题中没有提到这个问题),我还必须确保在参数中传递了正确的提交消息
使用像这样的代码
<% text = "Preview" # etc.
<%= submit_tag( text,
onclick: "
var form = $(this).closest('form');
form.data( 'remote', 'true' );
form.submit();
form.removeAttr('data-remote');
return false") %>
好的,这是我找到的解决方案
Rails视图(ajax
这里只是一个布尔值,不管我们是否希望按钮在ajax中执行)
javascript代码
function ajaxSubmit(e){
e.preventDefault();
var target = $(e.target)
var form = target.closest('form')
var tmp = form.data('remote')
var input = $('<input />').attr('type', 'hidden')
.attr('name', "commit")
.attr('value', target.val())
.appendTo(form);
form.data('remote', true)
form.submit()
if(!tmp){
form.removeAttr('data-remote');
}
input.remove()
return false;
}
功能ajaxSubmit(e){
e、 预防默认值();
var target=$(e.target)
var form=target.closest('form')
var tmp=form.data('remote')
变量输入=$('').attr('类型','隐藏')
.attr(“名称”,“提交”)
.attr('value',target.val())
.附录(表格);
form.data('remote',true)
表格提交(
如果(!tmp){
removeAttr(“数据远程”);
}
input.remove()
返回false;
}
请解释一下反对票。我看不出这个问题有多违反指导原则。。。?
function ajaxSubmit(e){
e.preventDefault();
var target = $(e.target)
var form = target.closest('form')
var tmp = form.data('remote')
var input = $('<input />').attr('type', 'hidden')
.attr('name', "commit")
.attr('value', target.val())
.appendTo(form);
form.data('remote', true)
form.submit()
if(!tmp){
form.removeAttr('data-remote');
}
input.remove()
return false;
}