用Javascript提交表单会导致html响应,而不是AJAX响应

Rails 3 Submitting a form with Javascript causes html response instead of a AJAX response

本文关键字:响应 AJAX html 提交 Javascript 表单      更新时间:2023-09-26

当我用Javascript提交表单时,我得到html响应,就像它忽略了远程true参数一样。如果我提交带有提交按钮的表单,它会执行AJAX并更新所请求的页面元素。因此,代码中唯一的区别是onchange参数和按钮的存在。下面是我的表单代码:

<% form_tag('switch_car', :method => :put, :name => "switch_car", :remote => true) do %>
<div class="field">
    <label>Car Name:</label>
    <%= select_tag(:id, options_from_collection_for_select(active_cars, "id", "name"), :onchange => "submitForm('switch_car')", :include_blank => true)%>
</div>
<% end %>

这是我的Javascript函数:只是一个简单的提交。

<script type="text/javascript" charset="UTF-8">
function submitForm(formname){
    document.switch_car.submit();
}
</script>
下面是生成的HTML:
<form accept-charset="UTF-8" action="switch_car" data-remote="true" method="post" name="switch_car"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="PEbdqAoiik37lcoP4+v+dakpYxdpMkSm7Ub8eZpdF9I=" /></div><div class="field"> 
    <label>Car Name:</label> 
    <select id="id" name="id" onchange="submitForm('switch_car')"><option value=""></option><option value="9">Truck</option> 
<option value="10">Car</option></select> 
</div> 

有人知道为什么Javascript提交导致不同的结果,而不是在同一表单上的按钮?如果是这样,我可以让Javascript提交与Ajax结果一起工作吗?

找到问题。我认为提交表单与javascript将提交表单与相同的远程=> true选项,但它似乎绕过了这一点。我不得不使用新的AjaxRequest来提交它的工作。