如何从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 控制器 - JSON - AJAX

我无法将我的数组从我的控制器获取到 codeigniter 中的 ajax

CodeIgniter - 如何从控制器返回 Json 响应

Codeigniter - 如何从 ajax 获取数据表数据?