2017-04-07 88 views
0

我有一个表单,当提交它发送到2个地方一个是php功能和其他json,原因是有标签字段,我必须得到那里值是由json。保存json post的值发送到另一个功能在php

问题是,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:

这里的时候colect值IM元素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'); 
     } 
    } 
} 
+0

未定义“索引”的元素是,当你尝试,你会得到什么访问$ _POST超全球。它与你的cad.astro_fornecedor函数无关。问题出在你的get_value_fornecedor函数上。 – Andreas

+0

'get_value_fornecedor'函数正常收到值...问题发生在我将该值从'get_value_fornecedor'传递到'cadastro_fornecedor'。 –

+0

你正在调用cadastro_fornecedor中的函数,那就是为什么你会得到错误。在cadastro_fornecedor中尝试var_dumping $ _POST,看看你有什么。 – Andreas

回答

1

问题是您发布的数据方法get_value_fornecedor但你不保存任何地方,利用笨会议

首先,你必须加载会话库。

$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; 
      } 
    } 
} 
+0

稍后给你反馈..检查它! –

+0

@MinaMagdy:当然 –

+0

谢谢朋友..作为摇滚的工作..我不记得使用set_userdata()..真的很感谢你! –

相关问题