Ir al contenido


Foto

Codeigniter, llamar a un metodo de un controlador desde una funcion jquery


  • Por favor identifícate para responder
2 respuestas en este tema

#1 Mawi

Mawi

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 01 octubre 2013 - 08:49

Hola muchachos, estoy teniendo muchos problemas al pasar mis funciones de php y javascript a codeigniter.

Necesito saber como llamar a un método de un controlador desde una función jquery, estos son mis codigos:

Función de javascript


delphi
  1. function agregar(){
  2.    
  3.  
  4.            
  5.         var numeroPunto = $('#numero').val();
  6. var descripcionPunto = $('#descrip').val();
  7.         var strNueva_Fila='<tr id="fila'+numeroPunto+'">'+
  8.                     '<td>'+numeroPunto+'</td>'+
  9.                     '<td>'+descripcionPunto+'</td>'+
  10.                     '<td><input type="button" value="Borrar" onClick="eliminarPunto('+numeroPunto+')"></td>'+
  11.                     '</tr>';
  12.                 $('#tablaPuntos').find('tbody').append(strNueva_Fila);
  13.         $('#numero').val('');
  14.         $('#descrip').val('');
  15.  
  16.    
  17.    
  18.  
  19.     function siError(e){
  20.         alert('Ocurrio un error '+e.statusText);
  21.     }
  22.  
  23.         // Obtener valores de los campos de texto
  24.         var parametros = {
  25.           numero : $('#numero').val(),
  26.           descripcion: $('#descrip').val()
  27.         };
  28.  
  29.     var post = $.post(
  30.                               '<?php echo base_url();?>' + 'crearControl/agregarPunto',    // Script que se ejecuta en el servidor
  31.                      
  32.                           parametros,                         
  33.                           siRespuesta,    // Función que se ejecuta cuando el servidor responde
  34.                           'html'          // Tipo de respuesta del servidor
  35.                               );
  36.  
  37.     post.error(siError);
  38. };




Controlador


delphi
  1. public function agregarPunto(){
  2.            
  3.            
  4.                 $this->lectura_model->agregarPuntos();
  5.            
  6.         }




Y este es mi modelo:



delphi
  1. public function agregarPuntos()
  2.     {
  3.         $data = array(
  4.               'numero' => $this->post('numero',TRUE) ,
  5.               'descripcion' => $this->post('descrip',TRUE)
  6.              
  7.             );
  8.         $this->db->insert('puntos',$data);
  9.     }
  10. }



A ver si alguien puede ayudarme, gracias.
  • 0

#2 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 01 octubre 2013 - 09:06

Solo con AJAX amigo,

las peticiones entre un lenguaje y otro necesitan una interfaz para comunicarse, esa interfaz es el Get y POST, ya que PHP no se ejecuta del lado del cliente y no esta a la espera de un cambio de forma directa.

Es decir que vas a tener que generar un archivo que te procese peticiones que vienen mediante POST y GET y que te las cambie a PHP dependiendo tus requerimientos, en base a eso podras ejecutar tu modelo y esas cosas de manera simple.

Es super sencillo, pero revisa AJAX es de lo más util para mantener interfaces y procesos limpios.

Puedes utilizar .ajax() de Jquery que es aun más rápido hay muchos tutos en google ;)
  • 0

#3 Mawi

Mawi

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 01 octubre 2013 - 09:58

Gracias amigo. Podrias recomendarme algun tutorial, es que llevo todo el dia buscando y no me entero de nada. Por otro lado me dices que use una interfaz para comunicarme, pero si no utilizo codeigniter y desde el js llamo a este archivo php, me va sin problemas



delphi
  1. <?php
  2.  
  3. require_once('../bd/conectar.php');
  4.  
  5. $numero = $_POST['numero'];
  6. $descrip = $_POST['descripcion'];
  7. $con = Conectar();
  8. $sSql = "SELECT numero FROM puntos WHERE numero = '$numero' ";
  9. $resulta = mysql_query($sSql, $con) or die (mysql_error());
  10. if (mysql_num_rows($resulta) == 0){
  11. $sql = "INSERT INTO puntos (numero, descrip) VALUES ('$numero', '$descrip')";
  12. $result = mysql_query($sql, $con) or die (mysql_error());
  13. if(!$result){
  14.   echo '0';
  15. }else{
  16.   echo '1';
  17. }
  18. }else{
  19.   echo '0';
  20. }
  21. ?>




y esta mi funcion de js:



delphi
  1. function agregar(){
  2.    
  3.     function siRespuesta®{
  4.         alert(parseInt®)
  5. if(r==0){
  6. alert("El numero ya existe!")
  7.         }else{
  8.         var numeroPunto = $('#numero').val();
  9. var descripcionPunto = $('#descrip').val();
  10.         var strNueva_Fila='<tr id="fila'+numeroPunto+'">'+
  11.                     '<td>'+numeroPunto+'</td>'+
  12.                     '<td>'+descripcionPunto+'</td>'+
  13.                     '<td><input type="button" value="Borrar" onClick="eliminarPunto('+numeroPunto+')"></td>'+
  14.                     '</tr>';
  15.                 $('#tablaPuntos').find('tbody').append(strNueva_Fila);
  16.         $('#numero').val('');
  17.         $('#descrip').val('');
  18.  
  19.     }
  20.     }
  21.  
  22.     function siError(e){
  23.         alert('Ocurrio un error '+e.statusText);
  24.     }
  25.  
  26.         // Obtener valores de los campos de texto
  27.         var parametros = {
  28.           numero : $('#numero').val(),
  29.           descripcion: $('#descrip').val()
  30.         };
  31.  
  32.     var post = $.post(
  33.                               "../funciones/agregar.php",    // Script que se ejecuta en el servidor
  34.                           parametros,                         
  35.                           siRespuesta,    // Función que se ejecuta cuando el servidor responde
  36.                           'html'          // Tipo de respuesta del servidor
  37.                               );
  38.  
  39.     post.error(siError);
  40. };


  • 0




IP.Board spam blocked by CleanTalk.