2

それぞれに対応するチェックボックスが付いた学生のリストがあります。チェック ボックスの値には、コントローラー関数に渡す必要がある学生 ID が含まれています。チェックボックスのチェックされた値を検出し、それをjavascript配列変数に保存するjavascriptコードがあります。次に、javascript 配列変数が $.window url に渡され、url アドレスが私の codeigniter コントローラー関数に向かいます。これは、最初の学生を選択すると正常に機能し、var_dump メソッドを介して学生 ID が表示されますが、2 番目または 3 番目などの学生が選択された場合、送信した uri には許可されていない文字が含まれていると表示されます。すべてのチェック ボックスをオンにしたときと同じ応答。javascript 配列変数は、学生リストの最初の値のみを取得して、単一の値のみを codeigniter コントローラー関数に渡したようです。$.window. 画像とコードを以下に示します。どうもありがとう。

最初の生徒リストのみを選択する画像 ここに画像の説明を入力

メール送信ボタンクリック後のコントローラ出力イメージ ここに画像の説明を入力

2次生を選ぶイメージ ここに画像の説明を入力

メール送信ボタンクリック後のコントローラ出力イメージ ここに画像の説明を入力

全生徒リストの選択画像 ここに画像の説明を入力

メール送信ボタンクリック後のコントローラ出力イメージ ここに画像の説明を入力

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

localhost/coursebooking/ajax_student_controller/pop_val/338,339 このような URL では、uri の許可されていない文字エラーが発生します。数字 338 と 339 の間のコンマ。これを解決するには、config.php ファイルの $config['permitted_uri_chars'] = 'az 0-9~%.:_+-'; にコンマ文字を追加するだけです。次に、コントローラー関数で爆発関数を使用して、コンマ区切りの値を区切ります。出力は次のとおりです。

config.php ファイルに 3 つのチェック ボックスをオンにしてカンマ文字を追加した後の var_dump 出力の画像 $config['permitted_uri_chars'] = 'az 0-9~%.:_+-,';

ここに画像の説明を入力

爆発関数を使用してカンマ区切りの値を配列のインデックス付き値に分割する var_dump 出力の画像。

ここに画像の説明を入力

コントローラーコード:

function pop_val(){

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

}
于 2013-07-03T11:30:15.803 に答える
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 に答える
0

私の改訂されたJavaScriptコード。ただし、この変更は、チェック対象の学生リストの 2 番目の値を取得する場合にのみ適用されます。これは、チェック対象の 3 番目の学生リストの正しい値を取得する場合と同じです。ただし、すべてのチェック ボックスを同時にオンにすると、「送信した 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>

リストの 2 番目の生徒を選択する画像

ここに画像の説明を入力

コントローラ出力は正しい値を返します

ここに画像の説明を入力

リストの 3 番目の生徒を選択するイメージ

ここに画像の説明を入力

コントローラ出力は正しい値を返します

ここに画像の説明を入力

リスト上のすべての生徒を選択する画像

ここに画像の説明を入力

それでもコントローラーの出力は 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 に答える