2014-03-05 15 views
4

儘管我盡了最大的努力,但我一直在獲取提交給NodeJS和Express以及handlebars的表單元素的數組鍵。節點中的表單元素數組鍵和表達式

我的表單元素看起來是這樣的:

{{#each block}} 
<input type='text' name='block_payout[{{id}}]' /> 
{{/each} 

這導致下面的標記在瀏覽器中:

<input type='text' name='block_payout[14]' /> 
<input type='text' name='block_payout[15]' /> 
<input type='text' name='block_payout[16]' /> 

在PHP中,這將導致一個數組的$ _POST的元素array:

$_POST [ 
    block_payout [ 
    14 => value1 
    15 => value2 
    16 => value3 
    ] 
] 

但是,Node/Express中的req.body屬性刪除了這些鍵和cre阿泰索引數組:

req.body [ 
    block_payout [ 
    0 => value1 
    1 => value2 
    2 => value3 
    ] 
] 

因爲我想使用的關鍵扳平提交值到別的東西,這是我的一個大問題。有誰知道我可以通過正確的密鑰獲取提交的表單數據?

回答

3

它看起來像身體解析器使用數組(它必須從索引0開始),當它只能看到數字鍵時,以及至少有一個非數字鍵的對象。考慮到這一點,您可以嘗試以下方法之一:

  1. 使用隱藏表單輸入強制在數組上使用對象。例如:

    <input type='hidden' name='block_payout[null]' /> 
    <input type='text' name='block_payout[14]' /> 
    ... 
    

    結果在下面的機構:

    { block_payout: { '14': 'test1', '15': 'test2', '16': 'test3', null: '' } } 
    
  2. 前綴您有非數字字符以迫使對象映射鍵。例如:

    <input type='text' name='block_payout[i14]' /> 
    ... 
    

    結果了以下機身:

    { block_payout: { i14: 'test1', i15: 'test2', i16: 'test3' } } 
    
+0

謝謝!這是一種恥辱,它必須是這樣的,我不知道它是否可以被視爲一個錯誤。 – lewis

相關問題