我有一个学生列表,每个学生都有相应的复选框。复选框值包含我需要传递给控制器功能的学生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);
}
答案 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~%。:_ + - ,';
var_dump输出的图像,使用explode函数将逗号分隔值分隔为数组索引值。
控制器代码:
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>
图像选择列表中的第二个学生
控制器输出返回正确的值
图像选择列表中的第3名学生
控制器输出返回正确的值
选择列表中所有学生的图像
Still Controller输出返回uri错误
答案 3 :(得分:-1)
url: "<?php echo base_url() ?>student_controller/pop_val/"+checked_val,
尝试:
url: "/student_controller/pop_val/" + checked_val,