2016-07-31 40 views
1

我有一個控制器將數據發送到模型,模型將這些數據插入到mysql中。如何接收來自codeigniter控制器的ajax響應?

我想知道插入的行的最後一個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函數。

回答

2

變化如下:

控制器:

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

我看到了你的第一個answear昨晚和工作過。謝謝老兄! –

+0

不客氣的朋友@Ramon Carvalho – Nikhil

2

你無法看到 「OK」,因爲在阿賈克斯的參數還沒有設置數據類型。添加一個參數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); 
} 
+0

謝謝,這也是工作! –

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

謝謝,這也是工作! –