2016-07-31 4 views
1

У меня есть контроллер, который отправляет данные модели, и модель вставляет эти данные в mysql.Как получить ответ ajax от контроллера codeigniter?

Я хочу знать последний идентификатор вставленной строки, но я хочу, чтобы этот ID в моей функции ajax использовался, чтобы перевернуть таблицу с информацией.

Вот что у меня есть:

Модель:

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

Функция Аякса:

  $(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, но я не вижу «ok» из контроллера на моем console.log или в моем предупреждении в браузере перед отправкой данных.

Я хочу только вернуть результат «$ 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); 
} 

Аякса функция:

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

Вы не можете видеть "ОК", потому что в АЯКС параметров вы не установите тип данных. Добавьте один параметр 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

Спасибо, это тоже! –

Смежные вопросы