2016-05-08 3 views
1

Ich habe versucht, site_url, base_url, URL direkt zu verwenden, aber nichts ändern, gibt ich auch durch einen einfachen Ajax-Aufruf 404Wie kann ich auf meinen Controller in Ajax für Codeigniter zugreifen?

function mostrarDatos(valor){ 
    $.ajax({ 
     url:"http://localhost/empresa/empleados/mostrar", 
     type:"POST", 
     data:{buscar:valor}, 
     success:function(respuesta){ 
      //alert(respuesta); 
      var registros = eval(respuesta); 

      html ="<table class='table table-responsive table-bordered'><thead>"; 
      html +="<tr><th>#</th><th>Nombres</th><th>Apellidos</th><th>DNI</th><th>Telefono</th><th>Email</th><th>Accion</th></tr>"; 
      html +="</thead><tbody>"; 
      for (var i = 0; i < registros.length; i++) { 
       html +="<tr><td>"+registros[i]["id_empleado"]+"</td><td>"+registros[i]["nombres_empleado"]+"</td><td>"+registros[i]["apellidos_empleado"]+"</td><td>"+registros[i]["dni_empleado"]+"</td><td>"+registros[i]["telefono_empleado"]+"</td><td>"+registros[i]["email_empleado"]+"</td><td><a href='"+registros[i]["id_empleado"]+"' class='btn btn-warning' data-toggle='modal' data-target='#myModal'>E</a> <button class='btn btn-danger' type='button' value='"+registros[i]["id_empleado"]+"'>X</button></td></tr>"; 
      }; 
      html +="</tbody></table>"; 
      $("#listaEmpleados").html(html); 
     } 
    }); 
} 

Controller

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Empleados extends CI_Controller 
{ 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model("Empleados_model"); 
    } 

    public function index() 
    { 
     $this->load->view('frontend/empleados'); 
    } 

    public function guardar() 
    { 
     //El metodo is_ajax_request() de la libreria input permite verificar 
     //si se esta accediendo mediante el metodo AJAX 
     if ($this->input->is_ajax_request()) 
     { 
      $nombres = $this->input->post("nombres"); 
      $apellidos = $this->input->post("apellidos"); 
      $dni = $this->input->post("dni"); 
      $telefono = $this->input->post("telefono"); 
      $email = $this->input->post("email"); 

      $datos = array(
       "nombres_empleado" => $nombres, 
       "apellidos_empleado" => $apellidos, 
       "dni_empleado" => $dni, 
       "telefono_empleado" => $telefono, 
       "email_empleado" => $email 
      ); 
      if($this->Empleados_model->guardar($datos)==true) 
      { 
       echo "Registro Guardado"; 
      } 
      else 
      { 
       echo "No se pudo guardar los datos"; 
      } 
     } 
     else 
     { 
      show_404(); 
     } 
    } 

    public function mostrar() 
    { 
     if ($this->input->is_ajax_request()) 
     { 
      $buscar = $this->input->post("buscar"); 
      $datos = $this->Empleados_model->mostrar($buscar); 
      echo json_encode($datos); 
     } 
     else 
     { 
      show_404(); 
     } 
    } 

    public function actualizar() 
    { 
     if ($this->input->is_ajax_request()) 
     { 
      $idsele = $this->input->post("idsele"); 
      $nombres = $this->input->post("nombressele"); 
      $apellidos = $this->input->post("apellidossele"); 
      $dni = $this->input->post("dnisele"); 
      $telefono = $this->input->post("telefonosele"); 
      $email = $this->input->post("emailsele"); 
      $datos = array(
       "nombres_empleado" => $nombres, 
       "apellidos_empleado" => $apellidos, 
       "dni_empleado" => $dni, 
       "telefono_empleado" => $telefono, 
       "email_empleado" => $email 
      ); 
      if($this->Empleados_model->actualizar($idsele,$datos) == true) 
      { 
       echo "Registro Actualizado"; 
      } 
      else 
      { 
       echo "No se pudo actualizar los datos"; 
      } 
     } 
     else 
     { 
      show_404(); 
     } 
    } 

    public function eliminar() 
    { 
     if ($this->input->is_ajax_request()) 
     { 
      $idsele = $this->input->post("id"); 
      if($this->Empleados_model->eliminar($idsele) == true) 
      { 
       echo "Registro Eliminado"; 
      } 
      else 
      { 
       echo "No se pudo eliminar los datos"; 
      } 
     } 
     else 
     { 
      show_404(); 
     } 
    } 

} 
+0

Können Sie die Struktur Ihres Controllers angeben? – shantanu

+0

ist es oben .... –

+0

versuchen Sie dies zu ändern, wenn ($ this-> Eingabe-> is_ajax_request()) {zu if ($ this-> Eingabe-> Post ("Buscar")) { – Poria

Antwort

0

Startfehler, und sobald der Anruf funktioniert gut beginnen, rufen Sie das Modell und die andere Controller-Logik, so würde ich vorschlagen, dass Sie eine Schaltfläche auf der Ansicht mit einer id="test_btn" und dann in der Javascript verwenden Sie diesen Code

$("#test_btn").click(function() 
    { 

     var target_url = '<?php echo(base_url()."empleados/mostrar") ; ?>'; 
     var data_to_send = {buscar:"123"}; 

     $.ajax(
     { 
      url : target_url, 
      data: data_to_send, 
      type: "POST", 
      success: function(return_data) 
      { 
       alert(return_data) 

      }, 
      error: function(jqXHR, textStatus, errorThrown) 
      { 
       console.log('textStatus='+textStatus); 
       console.log('errorThrown='+errorThrown); 
      } 
     }); 

     // prevent default 
     return false; 
    }); 

und dann in die empleados Controller Ihr nur die Daten lesen und das Hinzufügen, wie es zu der Ansicht zurückkehren so

public function mostrar() 
    { 
     $buscar = $this->input->post('buscar',TRUE); 

     echo($buscar); 
    } 

dann sollten Sie eine Warnung „123“

, sobald Sie die Benachrichtigung erhalten, dann starten Sie bekommen andere Logik, gehen Sie einfach einen Schritt nach dem anderen. Verwenden Sie auch Ihre Browser-Konsole (F12), die Ihnen hilft, die Anruffehler und erfolgreiche Anrufe zu sehen

hoffe, dass hilft!

Verwandte Themen