Jquery Rails提交表单,其中包含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})%>) 这个“另一个”表单(也

在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
    )有更多的表单字段,但这些字段是在页面加载时静态加载的

  • 问题是,当我提交这个“另一个”表单时,它只发送静态参数,不包括先前加载了partial的select字段

    我知道这与jQuery
    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