Jquery Rails提交表单,其中包含ajax加载的部分
在Rails3.2中,我试图提交一个表单,该表单包含一个select字段,该字段以前是用ajax添加到此表单的。像这样:Jquery Rails提交表单,其中包含ajax加载的部分,jquery,ruby-on-rails,ajax,ajaxform,Jquery,Ruby On Rails,Ajax,Ajaxform,在Rails3.2中,我试图提交一个表单,该表单包含一个select字段,该字段以前是用ajax添加到此表单的。像这样: 第一个表单(has:remote=>true)用js.erb响应,该js.erb(除其他外)在另一个表单中呈现一个选择字段,如下所示(选择字段在部分中): $('#target_variables_div').html('logged_data/select_vars',:locals=>{:vars=>@vars,:date=>@date})%>) 这个“另一个”表单(也
:remote=>true
)用js.erb响应,该js.erb(除其他外)在另一个表单中呈现一个选择字段,如下所示(选择字段在部分中):
$('#target_variables_div').html('logged_data/select_vars',:locals=>{:vars=>@vars,:date=>@date})%>)
:remote=>true
)有更多的表单字段,但这些字段是在页面加载时静态加载的live
或on
有关,但我仍然无法提交完整的表单
谢谢你的帮助 Jquery
live
和on
方法用于侦听页面上新添加的dom
元素,例如第一次加载时不存在的按钮,但它是以友好方式添加的,并且需要附加一个事件,如:
$('#dinamyc_button').on('click', function() {});
在您的情况下,我相信您必须手动设置select值。尝试为表单创建一个侦听器,在提交时将select值附加到要传递给服务器的数据中:
$('#your_form').submit(function() {
var formData = $(this).serialize();
var selectValue = $('#your_select').val();
formData['select'] = selectValue; // or formData.select = selectValue;
$.ajax({
type: 'POST',
url: whatever,
data: formData
})
});
这只是一个不完美的例子,但你已经有了想法。多亏了MurifoX,我终于成功地提交了完整的表格。之前,我在加载DOM后运行submit块(在我的CoffeeScript文件中的
jquery->
块中)。咖啡脚本的结果是:
$('#generate-button').on "click", (e) ->
e.preventDefault()
formData = $(this).parents("form").serialize()
selectValue = $('#select_vars_field').val()
$.ajax
type: 'POST',
url: '/logged_data/get_chart',
data: formData + "&vars=" + selectValue
那么,渲染是否正确?问题是您只获得静态数据?是的,它会正确呈现,但提交表单时,选择表单字段数据不包含在参数中…感谢您的帮助,但它仍然会给出相同的结果。我认为问题在于var selectValue=$(“#您的_select”).val();因为它仍然无法获取select字段值…请尝试调试此提交侦听器,看看是否可以在控制台上获取select值。
$('#generate-button').on "click", (e) ->
e.preventDefault()
formData = $(this).parents("form").serialize()
selectValue = $('#select_vars_field').val()
$.ajax
type: 'POST',
url: '/logged_data/get_chart',
data: formData + "&vars=" + selectValue