2016-05-24 14 views
0

私はcodeigniterのコントローラ関数にjavascript配列をポストし、AJAX経由でデータベースに格納しようとしています。私は単一の値を渡すときに問題はありません。これは配列を渡すのが初めてです。ここCodeIgniter:ViewからControllerへJavascript Arrayを渡してデータベースに格納

は、データが存在しないテーブルに格納されていないコード

//JAVASCRIPT IN THE VIEW (students variable already populated and classCode already has a value) 
$.ajax({ 
    traditional: true, 
    type: 'POST', 
    url: '<?php echo base_url(); ?>index.php/ams_controller/recordAbsence', 
    data: 'classCode='+classCode+'&students='+students, 
    success: function(resp) { 
     alert("Absences Saved"); 
    } 
}); 


//CONTROLLER FUNCTION 
public function recordAbsence() { 
    $temp=getdate(date("U")); 
    $date = $temp[month] ." ". $temp[mday] ." ". $temp[year]; 

    $classCode = $this->input->post('classCode'); 
    $students = $this->input->post('students'); 

    $this->load->model('model_users'); 
    if($this->model_users->recordAbsence($classCode, $students, $date)) { 
     return true; 
    } else{ 
     return false; 
    }  
} 

//MODEL FUNCTION 
public function recordAbsence($classCode, $students, $date) { 
    foreach($students as $row) { 
     $data = array(
      'stud_no' => $row, 
      'date_of_absence' => $date, 
      'classCode' => $classCode 
     ); 

     $query = $this->db->insert('absence', $data); 
    } 
    if($query) { 
     return true; 
    } else { 
     return false; 
    } 
} 

です。どんな助けもありがとう。オブジェクトのような

答えて

0

パスデータ:

data: {classCode: classCode, students: students}, 

編集:また、「jqueryのAJAX渡す配列」の下で、既存の質問のためにグーグルでは、あなたの最初のリンクとしてthisを与えるだろう。最初の2つの答えもチェックしてください。

編集:20160525171759

あなたはJSON文字列化された配列JSON.stringify(array)を渡すとjson_decode($this->input->post('postKey'))とそれを操作することができます。

//JS 

//students = ["2014-52307", "2014-26571", "2014-68959", "2014-60379", "2014-56077"]; 
students = JSON.stringify(students); 
//check if same is needed for classCode variable since I don't know if classCode is array too 
$.ajax({ 
    //I removed traditional property to pass an object 
    type: 'POST', 
    //I put URI as method argument (check if index.php is sufficient) 
    url: '<?php echo base_url("index.php/ams_controller/recordAbsence"); ?>', 
    data: {classCode: classCode, students: students}, 
    success: function(resp) { 
     alert("Absences Saved"); 
    } 
}); 

//PHP 
$students = $this->input->post('students'); 
//echo $students; 
+0

回答ありがとうございますが、データはまだデータベースに保存されていません。私はあなたが私に与えたリンクの2つの答えをチェックし、両方を試してみても、それはまだ動作しません。 –

+0

ajaxの前に 'students'変数をデバッグします(' console.log(students); ')。 – Tpojka

+0

ここでは、ajaxコールの前に学生がコンソールに表示する内容を示します:["2014-52307"、 "2014-26571"、 "2014-68959"、 "2014-60379"、 "2014-56077"] –

関連する問題