Jquery:创建要作为get参数传递的id数组

时间:2014-09-18 17:02:14

标签: javascript php jquery arrays

我有一个复选框列表,如下所示:

<input type="checkbox" value="12" name="urssaf-check[]" class="urssaf-check">
<input type="checkbox" value="13" name="urssaf-check[]" class="urssaf-check">

我需要检索所选的id数组(复选框的值),并将其作为url中的参数传递。到目前为止,我有这个:

var items = [];
$('.urssaf-check').each(function (key, object) {
    items.push($(this).val());
});

这给了我:

 ["12", "27", "26", "15", "28", "29", "30", "16", "14", "19", "17", "18", "20", "31", "32", "33", "21", "22", "34", "23", "24", "25"]

到目前为止一切都那么好,但是现在我需要在一个url中,所以当我在控制器中执行$ _GET ['ids']或者类似的时候我会看到相同的数字数组。

我现在尝试的是:

 var array = { ids : items };
 var params = $.param( array, true );

params给了我:

 ids=12&ids=27&ids=26&ids=15&ids=28......

get参数的var_dump中的哪一个将导致我只获取最后一项的id。如果我在“ids”之后手动添加[]它会正常工作,但我想知道用jQuery执行此操作的正确方法是什么。

编辑:我需要在不同的窗口中打开网址,我这样做:

 function MM_openBrWindow(theURL,winName,features) { 
        window.open(theURL,winName,features);
 }
 MM_openBrWindow($(this).attr('data-url')+'/?'+params, 'name', "scrollbars=yes,width=1000,height=720");

2 个答案:

答案 0 :(得分:1)

也许你可以在将数据发布到控制器时直接传递数组,例如:

$.post( "controller.php", { 'urssaf-check[]': items } );

如果您要使用post或get发送它,则无需解析它。

答案 1 :(得分:0)

好吧,我会等几天,但到目前为止,我做了这个,它对我有用。我仍然不高兴,并认为需要更好地解决问题:

            var params = "";
            for (var i = items.length - 1; i > 0; i--) {
                if(i==1){
                    params += 'operations[]='+items[i];
                }else{
                    params += 'operations[]='+items[i]+'&';
                }

            };