2013-01-20 30 views
-1

這裏是我的html:爲什麼多選值顯示爲csv而不是數組?

<select id="list" name="list" size=10 multiple> 
    <option value="xx">opt-1</option> 
    <option value="yy">opt-2</option> 
    <option value="zz">opt-3</option> 
</select> 

我得到的這個數值爲:

var list_v = $("#list").val(); 

提交使用。員額爲撥打:

'&mylist='+list_v 
在CGI

我收集像這樣(perl):

@list_values = $q->param('mylist'); 

我將@list_values數組中的所有選定選項作爲一個元素。我以爲我應該獲得所有的值作爲數組的單獨元素!

因此,例如,如果有人選擇選擇-1和選擇2 I預計@list_values [XX YY](兩個值作爲兩個元件)

BUT,我不但得不到[XX,YY] (兩個值作爲一個元素)

+0

formencoding不提交的方式,將是這樣的:'名單= XX&名單= YY&名單= zz'。可以使用jQuery'serialize()' – charlietfl

+1

''&mylist ='+ list_v'做一個字符串連接,所以JS在'list_v'數組上做'toString()',它給出一個逗號分隔的列表(並且你已經指定了實際的參數名稱mylist在開始時只有一次)。 – nnnnnn

+0

nnnnnn你是對的。我沒有使用表單提交數據只是一個$ .post ajax調用,所以我試圖構建數據字符串使用&我應該怎麼做?頁面上有其他元素(廣播,輸入,很多選擇等)我應該如何獲得格式正確的數據字符串提交使用$ .post調用? – rajeev

回答

3

如果我正確理解了你,你應該使用.serialize方法。如果選擇了兩個選項,它會給你list[]=xx&list[]=yy。然後,你不再需要手動構建您的數據參數字符串:

$.ajax({ 
    url: '/post-collector', 
    method: 'POST', 
    data: $('#your-form').serialize() 
}); 

您可以在這裏看到的區別:http://jsfiddle.net/QeqvF/

+0

thx。正如我以上更新。我沒有使用表單提交數據只是一個$ .post ajax調用,所以我試圖構建數據字符串使用&我應該怎麼做?頁面上有其他元素(廣播,輸入,很多選擇等)我應該如何獲得格式正確的數據字符串提交使用$ .post調用? – rajeev

+0

我最終使用了一種形式,並簡單地序列化形式..... thx多! – rajeev

相關問題