2015-07-20 60 views
3

好的,所以我有創建民意調查的形式。我想使用AJAX請求和有能力的用戶附加圖像,而不是問題,所以我使用FormData。提交同名多個輸入

我找不到任何解決方案來處理同名多個輸入(命名如下:「name []」)。我試過這個選項:

var fdata = new FormData(); 
fdata.append('answers[]', $('input[name="answer[]"]').val()); 

但它不起作用。我知道我可以使用.each(),但我不想爲每個問題指定不同的名稱,所以我不必重新構建PHP方面太多。

感謝您的任何幫助。

回答

2

你必須追加依次在每個值。目前,您只追加了第一個(因爲這是val()回報。

$('input[name="answer[]"]').each(function (index, member) { 
    var value = $(member).val(); 
    fdata.append('answers[]', value); 
}); 
+0

是的,我沒有注意到以前的解決方案給逗號分隔的字符串,這是正確的,對不起混淆。 – r34

0

問題是$('input[name="answer[]"]').val()沒有給你你需要的東西;它返回第一個輸入元素的值。相反,你要值的數組:

var values = []; 
$('input[name="answer[]"]').each(function(i, item) { 
    values.push(item.value); 
}); 

fdata.append('answers[]', values); 

http://jsfiddle.net/j5ezgxe9/

+0

的一部分「‘輸入[名稱=‘回答[]’]’」將無法正常工作,您將需要一個迭代器,因此輸出的html會是'input [name =「answer [」+ i +「]」]' – Canvas

+0

Nope。It works。Added a fiddle。 – Jeremy

+1

Nope。將字符串串化爲一個逗號分隔的字符串。可能在服務器上拆分它...除非任何輸入中包含逗號作爲數據 – Quentin