如何通过jquery$.window url将javascript数组变量传递给codeigniter控制器?

如何通过jquery$.window url将javascript数组变量传递给codeigniter控制器?,javascript,jquery,codeigniter,Javascript,Jquery,Codeigniter,我有一个学生名单,每个学生都有一个对应的复选框。复选框值包含我需要传递给控制器函数的学生id。我有一个javascript代码,它检测复选框的选中值并将其存储到javascript数组变量中。javascript数组变量随后将被传递到$.window url,url地址指向my codeigniter控制器函数。当您选择第一个学生时,它可以正常工作,它将通过var_dump方法显示学生id,但是,如果选择了第二个或第三个等等的学生,它将表示您提交的uri具有不允许的字符。选中所有复选框时的响应相

我有一个学生名单,每个学生都有一个对应的复选框。复选框值包含我需要传递给控制器函数的学生id。我有一个javascript代码,它检测复选框的选中值并将其存储到javascript数组变量中。javascript数组变量随后将被传递到$.window url,url地址指向my codeigniter控制器函数。当您选择第一个学生时,它可以正常工作,它将通过var_dump方法显示学生id,但是,如果选择了第二个或第三个等等的学生,它将表示您提交的uri具有不允许的字符。选中所有复选框时的响应相同。javascript数组变量似乎只向我的codeigniter控制器函数传递了一个值,只接受学生列表的第一个值。我将如何通过javascipt url和$.window传递第二、第三等检查值,甚至将javascript数组变量传递给codeigniter控制器函数。图像和代码如下所示。非常感谢

仅选择第一个学生列表的图像

单击“发送电子邮件”按钮后控制器输出图像

选择第二个学生的形象

单击“发送电子邮件”按钮后控制器输出图像

选择所有学生列表的图像

单击“发送电子邮件”按钮后控制器输出图像

Javascript:

<script type="text/javascript">

$("#send_email").click(function(){

var cboxes = document.getElementsByName('student_id[]');
var checked_val= [];
var unchecked_val=[];
var len = cboxes.length;
for (var i=0; i<len; i++) {

 (cboxes[i].checked) ? checked_val[i]=cboxes[i].value:unchecked_val[i]=cboxes[i].value;

 }


    $.window({
    title: "Coursebooking",
    url: "<?php echo base_url() ?>student_controller/pop_val/"+checked_val,
 });

 });

</script>
试试这个

var array_val = $('input[name="student_id[]"]:checked').map(function(){
                           return this.value;
                      }).get();




 $.window({
     title: "Coursebooking",
     url: "<?php echo base_url() ?>ajax_student_controller/pop_val/" + array_val,
   ........
var-array\u-val=$('input[name=“student\u-id[]”:选中”).map(函数(){
返回此.value;
}).get();
美元窗口({
标题:“教科书制作”,
url:“ajax\u学生\u控制器/pop\u val/”+array\u val,
........

我的修订版javascript代码。但是,这一更改仅适用于获取正在检查的学生列表的第二个值,与获取正在检查的第三个学生列表的正确值相同。但同时选中所有复选框会返回一个uri错误,即“您提交的uri包含不允许的字符”


$(“#发送电子邮件”)。单击(函数(){
var cboxes=document.getElementsByName('student_id[]);
检查的var_val=[];
未检查的var_val=[];
var array_val=新数组();
var len=cboxes.length;

对于(var i=0;ilocalhost/coursebooking/ajax_student_controller/pop_val/338339),这种url会导致uri不允许的字符错误。数字338和339之间有一个逗号。要解决这个问题,只需在$config['allowed_uri_chars'中的config.php文件中添加逗号字符即可='a-z 0-9~%:+-';然后在控制器函数中使用分解函数来分隔逗号分隔的值。以下是输出:

选中3个复选框并在config.php文件$config['allowed_uri_chars']='a-z 0-9~%:u+-,'中添加逗号字符后的var_转储输出的图像

使用explode函数将逗号分隔的值分离为数组索引值的var_转储输出的图像

控制器代码:

function pop_val(){

 $stud_id = $this->uri->segment(3);
 $split_val = explode(',',$stud_id);
 var_dump($split_val);

}

只是使用$.window而不是$.ajax,因为我将使用弹出窗口。是的,上面的代码在选择单个值时有效,在选中单个复选框时应用。感谢这一点,因为它解决了单独选择复选框时的问题,然而,最关键的部分是当我必须选中多个复选框时。然后上面的代码只返回uri错误,表示不允许的字符。我发现,当array_val变量中有多个值时,url看起来是这样的:GET 400(错误请求)导致uri错误。我该如何解决这个问题?好的。我知道了。只需在config.php文件$config['allowed_uri_chars'中添加“,”='a-z 0-9~%。:+-';检查application/config/config.php中的
$config['allowed\u uri\u chars']='a-z 0-9~%:+-';
并添加所需的字符谢谢。我只需要在配置文件中添加一个逗号字符。仍然会发生同样的事情。
url: "/student_controller/pop_val/" + checked_val,
var array_val = $('input[name="student_id[]"]:checked').map(function(){
                           return this.value;
                      }).get();




 $.window({
     title: "Coursebooking",
     url: "<?php echo base_url() ?>ajax_student_controller/pop_val/" + array_val,
   ........
<script type="text/javascript">

$("#send_email").click(function(){

var cboxes = document.getElementsByName('student_id[]');
var checked_val= [];
var unchecked_val=[];
var array_val=new Array();
var len = cboxes.length;
for (var i=0; i<len; i++) {

    if(cboxes[i].checked){
       checked_val[i]=cboxes[i].value;
       array_val.push(checked_val[i]);
    }
}


    $.window({
    title: "Coursebooking",
    url: "<?php echo base_url() ?>ajax_student_controller/pop_val/" + array_val,
});

});
</script>
function pop_val(){

 $stud_id = $this->uri->segment(3);
 $split_val = explode(',',$stud_id);
 var_dump($split_val);

}