2013-01-20 101 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

相关问题