简体   繁体   English

Javascript数组到PHP到数据库

[英]Javascript array to PHP to database

How to pass an array from javascript to controller using codeigniter如何使用codeigniter将数组从javascript传递到控制器

Here is my code:这是我的代码:

view:看法:

function submitFunc(){
  var arrayName = ['John ' , 'Josh' , 'Steph'];
  var arraySerial = [ 123, 456 , 789];

$.ajax({
  type: 'post',
  data: {arrayName:arrayName, arraySerial: arraySerial }, //not sure of this code
  url: '<?= base_url()."mycontroller/insertData"?>',
  success: function(data){
  }
  });
}

and in my controller:在我的控制器中:

    public function insertData()
      {
          $data = array(
              'Name' =>$this->input->post('arrayName'),
              'Serial' =>$this->input->post('arraySerial '),
          );
          $this->db->insert('test',$data);
      }

trying to achieve something like this n database:试图实现这样的 n 数据库:

| Name  | Serial|
| John  |   1   |
| Josh  |   2   |
| Steph |   3   |

You should encode the data in json format and then send it to controller您应该将数据以 json 格式编码,然后将其发送到控制器

     function submitFunc(){
      var arrayName = ['John ' , 'Josh' , 'Steph'];
      var jsonName = JSON.stringify(arrayName);
      var arraySerial = [ 123, 456 , 789];
      var jsonSerial = JSON.stringify(arraySerial);

    $.ajax({
      type: 'post',
      data: {arrayName:jsonName, arraySerial: jsonSerial }, //not sure of this code
      url: '<?= base_url()."mycontroller/insertData"?>',
      success: function(data){
      }
      });
    }

In you controller在你的控制器中

  public function insertData()
  {
      $arrayName = $this->input->post('arrayName');
      $decodeName= json_decode($arrayName,true); // will return an array
      $arraySerial = $this->input->post('arraySerial ');
      $decodeSerial =  json_decode($arraySerial ,true); // will return an array
      for($i=0;$i<=count($decodeName);$i++){
      $data[] = array('Name'=>$decodeName[$i],'Serial'=>$decodeSerial[$i]);
      }

      $this->load->modelName($data);        
  }

in your model在你的模型中

 public function modelName($data){
  $this->db->insert_batch('tablename', $data);
 }

Try the following controller code to insert data:尝试使用以下控制器代码插入数据:

$arrayName = $this->input->post('arrayName');
$Serial = $this->input->post('arraySerial');
$data = array();
foreach($arrayName as $key=>$name){
    $data[] = array('Name'=>$name,'Serial'=>$Serial[$key]);
}

$this->db->insert_batch('test', $data);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM