如何从codeigniter控制器接收ajax响应?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从codeigniter控制器接收ajax响应?相关的知识,希望对你有一定的参考价值。
我有一个控制器将数据发送到模型,模型将此数据插入mysql。
我想知道插入行的最后一个ID,但我想在我的ajax函数中使用此ID来使用信息来提升表。
在这里我有:
该模型:
public function add($nome, $documento)
$dados = array (
'nome' => $nome,
'documento' => $documento
);
$this->db->insert('clientes', $dados);
return $this->db->insert_id();
控制者:
public function add()
// validar
$nome = $this->input->post('inputNome');
$documento = $this->input->post('inputDocumento');
$this->Cliente_model->add($nome, $documento);
return "ok";
ajax功能:
$(document).ready(function()
$("#salvarCliente").click(function()
$.ajax(
url: "cliente/add",
type: 'POST',
data: $("#formCliente").serialize(),
success: function(msg)
alert(msg);
$("#clienteMensagem").html('Cliente cadastrado com sucesso!');
$("#table-clientes tr:last").after('<tr><td>'+msg+'</td><td>' + $('#clienteNome').val() + '</td><td>' + $('#clienteDocumento').val() + '</td><td></td></tr>');
$("#clienteNome").val('');
$("#clienteDocumento").val('');
);
return false;
);
);
代码将我的数据添加到mysql,但在发送数据之前,我无法从控制台上的console.log或浏览器中的警报中看到“ok”。
我只想将“$ this-> db-> insert_id()”的结果从我的模型返回到我的控制器,从我的控制器返回到我的ajax函数。
答案
改变如下:
控制器:
public function add()
// validar
$nome = $this->input->post('inputNome');
$documento = $this->input->post('inputDocumento');
$res = $this->Cliente_model->add($nome, $documento);
echo json_encode($res);
ajax功能:
$(document).ready(function()
$("#salvarCliente").click(function()
$.ajax(
url: "cliente/add",//Enter full URL
type: 'POST',
dataType:'JSON',
data: $("#formCliente").serialize(),
success: function(msg)
alert(msg);
$("#clienteMensagem").html('Cliente cadastrado com sucesso!');
$("#table-clientes tr:last").after('<tr><td>'+msg+'</td><td>' + $('#clienteNome').val() + '</td><td>' + $('#clienteDocumento').val() + '</td><td></td></tr>');
$("#clienteNome").val('');
$("#clienteDocumento").val('');
);
return false;
);
);
另一答案
您无法看到“ok”,因为在ajax参数中您尚未设置dataType。添加一个参数dataType:json/html
然后您就可以从控制器接收数据。像这样的东西:
$.ajax(
url: "cliente/add",
type: 'POST',
data: $("#formCliente").serialize(),
dataType: 'JSON',
success: function(msg)
alert(msg);
);
并将控制器功能替换为此功能
public function add()
// validar
$nome = $this->input->post('inputNome');
$documento = $this->input->post('inputDocumento');
$id = $this->Cliente_model->add($nome, $documento);
echo json_encode($id);
另一答案
public function add()
// validar
$nome = $this->input->post('inputNome');
$documento = $this->input->post('inputDocumento');
$insert_id = $this->Cliente_model->add($nome, $documento);
echo $insert_id; exit;
另一答案
为了使其更加自定义,您可以通过另一种方式获得响应
public function add()
// validar
$nome = $this->input->post('inputNome');
$documento = $this->input->post('inputDocumento');
$res = $this->Cliente_model->add($nome, $documento);
$this->output
->set_status_header(200)
->set_content_type('application/json', 'utf-8')
->set_output(json_encode($res , JSON_PRETTY_PRINT))
->_display();
exit;
以上是关于如何从codeigniter控制器接收ajax响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Codeigniter 中的分页类与 AJAX 一起工作?
如何创建ajax请求以使用DataTable和Codeigniter并在同一文件中返回
我无法将我的数组从我的控制器获取到 codeigniter 中的 ajax