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

时间:2013-07-03 08:36:35

标签: javascript jquery codeigniter

我有一个学生列表,每个学生都有相应的复选框。复选框值包含我需要传递给控制器​​功能的学生ID。我有一个javascript代码,检测复选框检查值并将其存储到javascript数组变量。然后将javascript数组变量传递给$ .window url,并将url地址标记到我的codeigniter控制器函数。当你选择第一个学生时它会正常工作,它会通过var_dump方法显示学生ID,但是,如果选择了第二个或第三个学生等,则说你提交的uri不允许使用字符。选中所有复选框时的相同响应。 javascript数组变量似乎只传递了一个值到我的codeigniter控制器函数,只取得学生列表的第一个值。我如何能够传递第二个,第三个等已检查的值,甚至通过带有$ .window的javascipt url将javascript数组变量传递给codeigniter控制器函数。图像和代码如下所示。非常感谢。

图片只选择第一个学生列表 enter image description here

单击发送电子邮件按钮后的控制器输出图像 enter image description here

选择第二个学生的图像 enter image description here

单击发送电子邮件按钮后的控制器输出图像 enter image description here

选择所有学生名单的图像 enter image description here

单击发送电子邮件按钮后的控制器输出图像 enter image description here

使用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>

控制器:

function pop_val(){
 $stud_id = $this->uri->segment(3);
 var_dump($stud_id);
}

4 个答案:

答案 0 :(得分:1)

试试这个,

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,
   ........

答案 1 :(得分:1)

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

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

enter image description here

var_dump输出的图像,使用explode函数将逗号分隔值分隔为数组索引值。

enter image description here

控制器代码:

function pop_val(){

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

}

答案 2 :(得分:0)

我修改过的javascript代码。但是,此更改仅适用于检查学生列表的第二个值,与获取正在检查的第三个学生列表的正确值相同。但是同时检查所有复选框会返回一个uri错误,指出“您提交的URI已禁止使用字符”。

<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>

图像选择列表中的第二个学生

enter image description here

控制器输出返回正确的值

enter image description here

图像选择列表中的第3名学生

enter image description here

控制器输出返回正确的值

enter image description here

选择列表中所有学生的图像

enter image description here

Still Controller输出返回uri错误

enter image description here

答案 3 :(得分:-1)

 url: "<?php echo base_url() ?>student_controller/pop_val/"+checked_val,

尝试:

url: "/student_controller/pop_val/" + checked_val,