1

ページに選択リストがあり、すべての選択リストを繰り返し処理しています。値は、「default」、「Excused Absent」、および「ExcusedLate」です。デフォルトは基本的に「選択...」です。これは無意味なので、サーバーに渡したり、処理したりしたくありません。

これは私のjQueryです:

    attendSelect.each(function(k, v)
    {
        attendance = $(this).val();

        if(attendance != "default")
        {   
            console.log(attendance == "default");
            students[k] = 
            {
                lesson : $(this).attr('id'),
                student_id : $(this).attr('name'),
                attendance  : attendance
            };
        }    
    });

これは、テストするたびに正しい回数(この場合は3回)falseを出力するために機能します。ただし、問題はサーバー側にあります(私は思いますか?)。変数を出力すると、jQueryでデフォルトが見つかった回数だけNULL、NULLが返されます。確かに、NULLのないサイズ3の配列のみを取得する必要があります。

これはPHPで出力されるものです:

$students = json_decode($_POST['students'], true);
var_dump($students);

array(12) {
  [0]=>
  NULL
  [1]=>
  NULL
  [2]=>
  NULL
  [3]=>
  array(3) {
    ["lesson"]=>
    string(9) "lesson[7]"
    ["student_id"]=>
    string(12) "student[241]"
    ["attendance"]=>
    string(14) "Excused Absent"
  }
  [4]=>
  array(3) {
    ["lesson"]=>
    string(9) "lesson[7]"
    ["student_id"]=>
    string(12) "student[270]"
    ["attendance"]=>
    string(12) "Excused Late"
  }
  [5]=>
  NULL
  [6]=>
  NULL
  [7]=>
  NULL
  [8]=>
  NULL
  [9]=>
  NULL
  [10]=>
  NULL
  [11]=>
  array(3) {
    ["lesson"]=>
    string(9) "lesson[9]"
    ["student_id"]=>
    string(12) "student[317]"
    ["attendance"]=>
    string(14) "Excused Absent"
  }
}

これは私のAJAXです:

students = JSON.stringify(students)

    if(attendSelect.length)//protect against submitting on past lessons
    {
        $.post('',  { students : students, cid: cid }, function(response)
        {

            console.log(response);          
        });
    }

jQueryにifステートメントを入力しなくてもNULLを取得する理由がわかりません。

4

2 に答える 2

1

あなたの問題はこの行にあります:

students[k] = 

代わりに、使用する必要があります.push()

students.push(
        {
            lesson : $(this).attr('id'),
            student_id : $(this).attr('name'),
            attendance  : attendance
        });

あなたのk値は、attendSelectあなたが処理しているのインデックスです。学生配列を作成するときは、新しい配列を作成するだけでなく、それらのインデックス キーを割り当てています。Javascript は、欠落しているインデックスを NULL 値で「埋めています」。

于 2012-04-06T20:26:05.483 に答える
1

JSON の配列はインデックスをスキップできません。

nullを使用して値を除外できますarray_filter(2 番目の引数として何も渡さないでください)。

于 2012-04-06T20:27:54.673 に答える