symfony2使用ajax模拟多个提交按钮

时间:2014-03-27 14:51:33

标签: jquery symfony form-submit symfony-forms symfony-2.3

2.3这个新功能有多个提交按钮
但我发送的表格是用ajax

$.post("{{ path('order_ad_banner') }}",
        $('#adOrderForm').serialize() + "&" + $.param({url: "{{ url }}"}),
        function (data) {
            $('#formWindow').html(data);
        }
    );

这是我的按钮:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
       ....
        ->add('step2submit', 'submit', array('validation_groups' => array("order step 2")))
        ->add('step3submit', 'submit')
        ->add('step4submit', 'submit')
    ;
}

我如何使用' step2submit'模拟提交?带ajax的按钮?

修改:找到解决方案 - >在帖子

之前向表单添加隐藏字段
var input = $("<input>").attr("type", "hidden").attr("name",     'adOrder[step2submit]').val("");
    $('#adOrderForm').append(input);
    $.post("{{ path('order_ad_banner') }}",
            $('#adOrderForm').serialize() + "&" + $.param({url: "{{ url }}"}),
            function (data) {
                $('#formWindow').html(data);
            }
    );

1 个答案:

答案 0 :(得分:5)

操纵dom可能不是最好的解决方案。 当浏览器将单击的按钮添加为没有值的另一个参数时,您可以执行相同操作并将其手动添加到序列化数据,然后通过ajax发送。 使用此代码,您只需要在按钮上添加“submit-button”类,并且在命名时更加灵活(因此,如果您在php代码中重命名该按钮,它仍然可以工作)。

$('.submit-button').on('click', function(){
  var data = $(this).parents('form').first().serializeArray();
  data.push( {'name':$(this).attr('name')});
  $.ajax({
      type: 'POST',
      url: $(this).parents('form').first().attr('action'),
      dataType: 'html',
      data : data,
      success: function(answer) {
        //do something with the answer
      },
      error: function() {
      },
      complete: function() {
      }
  });
  return false;
});