如何从 codeigniter 控制器接收 ajax 响应?
How to receive a ajax response from a codeigniter controller?
我有一个控制器将数据发送到模型,模型将此数据插入 mysql。
我想知道插入行的最后一个 ID,但我希望我的 ajax 函数中的这个 ID 用于将信息更新到 table。
这是我的:
型号:
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,但在我发送数据。
我只想 return 从我的模型到我的控制器以及从我的控制器到我的 ajax “$this->db->insert_id()” 的结果功能。
更改如下:
控制器:
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: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;
}
我有一个控制器将数据发送到模型,模型将此数据插入 mysql。
我想知道插入行的最后一个 ID,但我希望我的 ajax 函数中的这个 ID 用于将信息更新到 table。
这是我的:
型号:
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,但在我发送数据。
我只想 return 从我的模型到我的控制器以及从我的控制器到我的 ajax “$this->db->insert_id()” 的结果功能。
更改如下:
控制器:
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: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;
}