2

我有一个学生列表,每个学生都有一个相应的复选框。复选框值包含我需要传递给我的控制器函数的学生 ID。我有一个 javascript 代码,它检测复选框选中的值并将其存储到 javascript 数组变量中。然后将 javascript 数组变量传递给 $.window url,其中的 url 地址指向我的 codeigniter 控制器函数。当您选择第一个学生时,这很好用,它会通过 var_dump 方法显示学生 ID,但是,如果选择了第二个或第三个等学生,它会说您提交的 uri 具有不允许的字符。选中所有复选框时的相同响应。javascript 数组变量似乎只向我的 codeigniter 控制器函数传递了一个值,它只采用了学生列表的第一个值。我如何能够传递第二个、第三个等检查值,甚至通过带有 $.window 的 javascipt url 将 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>

控制器:

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

4 回答 4

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,
   ........
于 2013-07-03T08:57:33.807 回答
1

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

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

在此处输入图像描述

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

在此处输入图像描述

控制器代码:

function pop_val(){

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

}
于 2013-07-03T11:30:15.803 回答
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>

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

在此处输入图像描述

控制器输出返回正确的值

在此处输入图像描述

图片选择列表中的第三个学生

在此处输入图像描述

控制器输出返回正确的值

在此处输入图像描述

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

在此处输入图像描述

仍然控制器输出返回 uri 错误

在此处输入图像描述

于 2013-07-03T09:20:36.830 回答
-1
 url: "<?php echo base_url() ?>student_controller/pop_val/"+checked_val,

尝试:

url: "/student_controller/pop_val/" + checked_val,
于 2013-07-03T08:53:08.613 回答