如何使用select2输入作为json解码值并在PHP中循环它们?

时间:2015-11-08 14:27:30

标签: javascript php json ajax codeigniter

您好我正在尝试使用select2多选并通过ajax将所选选项发送到PHP codeigniter控制器。我需要遍历模型中的json解码值,但它不起作用。

用于发布所选值的Javascript:

$("#add_group").on("click",function(e){
        e.preventDefault();
        var $group=document.getElementById('group').value;
        var $foreman=$("#foreman").select2("data");
        var $foreman_id=$foreman['id'];
        var $foreman_name=$foreman['text'];
        var $employee = $("#employee").select2("data");

        var employees = {
            info: []
        };

        var keys = Object.keys($employee),
            len = keys.length,
            i = 0,
            prop,
            value;
        while (i < len) {
            prop = keys[i];
            value = $employee[prop];
            employees.info.push({
                "id" : value.id,
                "name"  : value.text

            });
            i += 1;
            console.log('Employees : '+employees.info)
        }
        var $json_emp= JSON.stringify(employees);
        console.log('Employees : '+$json_emp);
        ajax("add_group",$group,$foreman_id,$foreman_name,$json_emp);
    });

型号:

public function add_group()
   {
       $group = $this->security->xss_clean($this->input->post('group'));
       $foreman_id = $this->security->xss_clean($this->input->post('foreman_id'));
       $foreman_name = $this->security->xss_clean($this->input->post('foreman_name'));
       $json_emp = $this->security->xss_clean($this->input->post('json_emp'));

       $array_emp = json_decode($json_emp,true);
       var_dump($array_emp);
       //echo json_encode($array_emp);
       //return false;
        print_r($array_emp->info);
       $emp_ids = '';
       $emp_names='';
       $i=0;
       //$employee_id = $array_emp['info'][$i]['id'];
       //$employee_name = $array_emp['info'][$i]['name'];


               foreach( $array_emp['info'][$i] as $emp_info){
                   $emp_ids.=$emp_info->id;
                   $emp_names.=$emp_info->name;
                   $i=$i+1;
               }



       echo 'Employee IDs'.$emp_ids;
       $crt_date = date('Y-m-d H:i:s');
       $data_group = array(
           'group_name'      => $group,
           'foreman_id'      => $foreman_id,
           'foreman_name'    => $foreman_name,
           'employees_in_group'      => $emp_names,
           'employees_in_group_id'   => $emp_ids,
           'rec_status'     => 'A',
           'crt_dt'         => $crt_date,

       );
       $result = $this->db->insert('group', $data_group);
       $insert_id=$this->db->insert_id();
       if($insert_id)
           return $insert_id;
       else
           return false;
   }

打印_r输出json_decode()

Array
(
    [info] => Array
        (
            [0] => Array
                (
                    [id] => 10
                    [name] => employee1
                )

            [1] => Array
                (
                    [id] => 12
                    [name] => emplyee3
                )

        )

)

数组的var_dump输出

array(1) {
  ["info"]=>
  array(3) {
    [0]=>
    array(2) {
      ["id"]=>
      string(2) "10"
      ["name"]=>
      string(9) "employee1"
    }
    [1]=>
    array(2) {
      ["id"]=>
      string(2) "11"
      ["name"]=>
      string(9) "employee2"
    }
    [2]=>
    array(2) {
      ["id"]=>
      string(2) "12"
      ["name"]=>
      string(8) "emplyee3"
    }
  }
}
  

如何在模型中循环显示这些值?

已尝试但失败的代码如下:

$emp_ids = '';
       $emp_names='';
       $i=0;
       foreach($array_emp as $row) { //foreach element in $arr
           foreach($row['info'] as $employees){
               foreach($employees[$i] as $emp_info){
                   $emp_ids.=$emp_info['id'];
                   $emp_names.=$emp_info['name'];
               }
           }
           $i=$i+1;
       }

0 个答案:

没有答案