2016-07-31 10 views
1

Ich habe einen Controller, der die Daten an das Modell sendet und das Modell diese Daten in die MySQL-Datenbank einfügen.Wie erhalte ich eine Ajax-Antwort von einem Codeigniter-Controller?

Ich möchte die letzte ID der Zeile eingefügt wissen, aber ich möchte diese ID in meiner Ajax-Funktion verwenden, um die Tabelle mit den Informationen zu aktualisieren.

Hier ist, was ich habe:

Das Modell:

public function add($nome, $documento) 
    { 
    $dados = array (
       'nome' => $nome, 
       'documento' => $documento 
    ); 

    $this->db->insert('clientes', $dados); 
    return $this->db->insert_id(); 
    } 

Der Controller:

public function add() 
{ 
    // validar 

    $nome = $this->input->post('inputNome'); 
    $documento = $this->input->post('inputDocumento'); 
    $this->Cliente_model->add($nome, $documento); 
    return "ok"; 
} 

Die Ajax-Funktion:

  $(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; 
       }); 
     }); 

Der Code hinzufügen, meine Daten zu mysql, aber ich kann nicht sehen die "ok" von der Steuerung auf meiner Konsole.log oder in meiner Warnung im Browser, bevor ich die Daten sende.

Ich möchte nur das Ergebnis von "$ this-> db-> insert_id()" von meinem Modell zu meinem Controller und von meinem Controller zu meiner Ajax-Funktion.

Antwort

2

ändern folgende:

Der Controller:

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

Die Ajax-Funktion:

 $(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

ersetzen sah ich Ihre erste answear gestern Abend und das funktionierte auch. Danke Kumpel! –

+0

Sie sind herzlich Kumpel @Ramon Carvalho – Nikhil

2

Sie können nicht "ok", weil in Ajax-Parameter, die Sie nicht festgelegt haben die Datentyp. Fügen Sie einen Parameter dataType:json/html hinzu und Sie können dann Daten vom Controller empfangen. Etwas wie folgt aus:

$.ajax({ 
    url: "cliente/add", 
    type: 'POST', 
    data: $("#formCliente").serialize(), 
    dataType: 'json' 
    success: function(msg){ 
      alert(msg); 
      } 
}); 

und die Controller-Funktion in diesem

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

Vielen Dank, das ist auch Arbeit! –

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

Danke, das ist auch Arbeit! –

Verwandte Themen