2015-11-17 59 views
0

說我有一個形式,HTML,內容如下添加動態表單數據AJAX POST請求

<form> 
    <div id="si-main"> 
     <button id="si-btn">Add new content</button> 
     <div class="si-content"> 
      <input type="text" class="si-input" name="content"> 
     </div> 
    </div> 

    <input type="submit" id="si-submit" value="Submit"> 
</form> 

現在我想追加「.si含量」的div當我點擊「#SI-BTN 「我這樣做,在JS使用該腳本

$('#si-btn').click(function() { 
    $('#si-main').append('<div class="si-content"><input type="text" class="si-input" name="content"></div>') 
}) 

我然後提交表單像這樣的JS

$('form #si-submit').click(function() { 
    var data_to_send = {} 
    $('form').find('.si-input').each(function() { 
     if ($(this).hasClass('si-input')) { 
      data_to_send[$(this).attr('name')] = $(this).val()  
     } 
    }) 
    //NEXT I SEND THE AJAX REQUEST AND HANDLE THE RESPONSE 
}) 

現在的問題是每個i澳鵬它增加了一個新的「si-content」div。但是,當我發送數據時,它只發送第一個div的內容。有人可以告訴我在這種情況下添加數據的最佳方式是什麼?

+2

使用['$( '形式').serialize()'](https://api.jquery.com/serialize/) – Tushar

+0

你必須給唯一'name'到每個「輸入」框,否則'data_to_send []'將只保存單個記錄。每次追加時,嘗試給每個動態輸入框賦予不同的名稱。 – vijayP

+0

''沒有'value'屬性? – guest271314

回答

3

嘗試:

$('#si-main').append('<div class="si-content"><input type="text" class="si-input" name="content[]"></div>'); 

$('form #si-submit').click(function() { 
    var data_to_send = $(this).parent('form').serialize(); 

    //NEXT SEND THE AJAX REQUEST AND HANDLE THE RESPONSE 
})