2014-03-27 65 views
3

有2.3與多個提交按鈕
但是我派我的形式使用AjaxSymfony2的模擬多個提交按鈕與阿賈克斯

$.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

您是否曾嘗試在'step2submit'按鈕上觸發'.click()'? –

+0

我沒有這個按鈕 – jeff

+0

好的。您可以添加對此問題的答案並接受它以關閉它。 –

回答

4

前隱藏字段添加到表單操縱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; 
});