我有一个复选框列表,如下所示:
<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");
答案 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]+'&';
}
};