2013-03-07 30 views
0

我想動態添加jQuery項目的字段。我的問題是,當我發送的形式處理腳本,做的print_r()在$ _ POST [「項目」]只列出最後一個數組...只有最後一個文本輸入數組發送到php處理腳本

這裏是我的代碼:

<div class="itemAdd row"> 
          <div class="span4"> 
           <p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p> 
           <p>Status: <br /> 
           <select name="item[status]" class="span4"> 
            <option value="enabled" selected="selected">Enabled</option> 
            <option value="disabled">Disabled</option> 
            <option value="damaged">Damaged</option> 
           </select> 
           </p> 
          </div> 
          <div class="span4"> 
           <p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p> 
          </div> 
          <div class="clearfix"></div> 
          <hr /> 
         </div> 

此按鈕添加新的領域:

<a href="#" class="btn btn-small btn-primary" id="addItem"><i class="icon-plus icon-white"></i> Add Item</a> 

這裏是添加新的領域的jQuery:

<script> 
//Add Items 
$('a#addItem').on('click', function(event) { 

    event.preventDefault(); 
    $('#productItems').append('<div class="itemAdd row"><div class="span4"><p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p><p>Status: <br /><select name="item[status]" class="span4"><option value="enabled" selected="selected">Enabled</option><option value="disabled">Disabled</option><option value="damaged">Damaged</option></select></p></div><div class="span4"><p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p></div><div class="clearfix"></div><hr /></div>'); 

}); 

+0

你能發佈控制器代碼負責處理嗎? – 2013-03-07 18:06:42

回答

2

您正在使用的陣列在你的HTML,但該指數是一個字符串:

item[itemNumber] 

所以每個項目將覆蓋前一個。

你可以將其更改爲:

itemNumber[] 

itemNote[] 

,或者如果你有一個數字ID,你可以使用它。

2

你強迫陣列鑰匙放在表單域,et.c:

... name="item[itemNumber]" ... 

itemNumber不是JS變種,它的字面HTML /屬性文本要追加的HTML斑點。也許你的意思更像

... name="item[' + itemNumber + ']" ... 

改爲。即使只有item[]也會允許PHP爲你自動分配數組密鑰。但就目前而言,PHP將爲您創建一個數組,但由於您的所有字段都使用了SAME鍵名,因此您將不斷覆蓋值並最終只使用表單中的最後一個字段名稱/密鑰對。

+0

@DanielWhite只需使用'name =「item []」',你會發現$ _POST ['item']是一個數組 – Popnoodles 2013-03-07 18:10:52

相關問題