保存json post值以发送到php中的另一个函数

时间:2017-04-07 17:55:52

标签: php json function codeigniter

我有一个表单,当提交它发送到2个地方一个是PHP函数,另一个是json,原因是有标记字段,我必须得到那里的值是由json。

问题是json数组值在mysql中转到不同的表,需要来自其他php函数的id。并总是给我Undefined index: elements

代码HTML:

此处表单转至功能cadastro_fornecedor()

<form id='form_c_fornecedor' action="<?php echo base_url().'admin/cadastro_fornecedor';?>" method="post" enctype="multipart/form-data">
   <button type="submit" class="btn btn-primary">adicionar</button>
</form>

代码JS:

这里的表单在提交时收集值im elements var并将它们发布到get_value_fornecedor()并且它的工作正常,直到这里。

$('#form_c_fornecedor').bind('submit', function (d) {
    var elements = $('#try').tagHandler('getTags'); 
    $.post("<?php echo base_url().'admin/get_value_fornecedor/'; ?>",{elements: JSON.stringify(elements)});
});

函数get_value_fornecedor

该功能获得了成功的价值。

public function get_value_fornecedor(){
    $elements = json_decode($_POST['elements'], true);
    return $elements;
}

函数cadastro_fornecedor

此处我收到Undefined index: elements表示$elements值的错误未传递给此函数。

public function cadastro_fornecedor(){
    $elements = $this->get_value_fornecedor();

    $inputall= $this->input->post();
    $this->form_validation->set_rules('nome_fantasia', 'Nome Fantasia', 'required');
    if ($this->form_validation->run() == FALSE){
      $this->session->set_flashdata('error', 'O campo Nome é obrigatório.');
    }else{
        if($_POST){
            $data_cad = date('Y-m-d');
            $data=array('desc_entidade' =>$inputall['desc_entidade'],
                        'data_cad'      =>$data_cad
                    );
            $id= $this->cake->c_fornecedor($data);

            if(!empty($elements)){
                for ($i = 0; $i < count($elements); $i++){
                    $data_produtos=array(   'fornecedor_id'    =>$id,
                                            'produto_tag'      =>$elements[$i]
                                    );
                    $this->cake->c_produto($data_produtos);
                }
            }
            $this->session->set_flashdata('success', 'O campo Nome é obrigatório.');
            //redirect(base_url().'admin/c_fornecedor');
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题是您是将数据发布到方法get_value_fornecedor,但是您没有将其保存在任何地方,请使用codeigniter会话

首先你有加载会话库。

$this->load->library("session");

您可以在自动加载中加载它,我认为更好。

设置会话

$this->session->set_userdata("SESSION_NAME","VALUE");

提取数据

$this->session->userdata("SESSION_NAME");

您可以重写您的功能,如下所示

public function get_value_fornecedor()
{
    /* This is for your ajax call for saving data inside session where key somedata*/
    if(isset($_POST['elements']))
    {
            $this->session->set_userdata("somedata",$_POST['elements']);
    }else
    {
           /* This is for accessing your saved data */
            $elements_saved = $this->session->userdata("somedata");

            if($elements_saved)
            {
                  $elements = json_decode($elements_saved, true);
                  return $elements; 
            }
    }
}