我有一个表单,当提交它发送到2个地方一个是PHP函数,另一个是json,原因是有标记字段,我必须得到那里的值是由json。
问题是json数组值在mysql中转到不同的表,需要来自其他php函数的id。并总是给我Undefined index: elements
此处表单转至功能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>
这里的表单在提交时收集值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');
}
}
}
答案 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;
}
}
}