entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Buenos Días, estoy implementando los métodos de modificación de contenido ADD,UPDATE,DELETE pero cuando paso datos con JQuery para hacer las pruebas no me envía ningún dato o me da error en otras ocasiones.
HTML y JS:

<div class="container">
    <div class="row">
        <div class="col-lg-6 col-md-6"></div>
        <div class="col-lg-6 col-md-6">
            <br></br>
             <button class="btn btn-primary" onclick="enviar()">Enviar</button>         
        </div>
        <div class="col-lg-6 col-md-6"></div>
    </div>
</div>
<script type="text/javascript" src="../assets/vendor/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
            function enviar(){
                // Funcion experimental para trabajar métodos                                          

                $.ajax({
                    type: "POST",
                    url: "<?php echo base_url();?>api/secc/add/API-RSC/<?php echo $token;?>",
                    data: { name: "Nueva", idioma: "español" },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data, status, jqXHR) {
                        console.log(data);
                        },
                    error: function (jqXHR, status) {           
                        console.log(status);
                        }
                });                
            }
</script>

y en php:

function add_post(){ # Inserta una nueva Sección   
        $data = array('returned: '. $this->post('name'));
        $this->response($data);      

    }

aunque me gustaría hacer los métodos utilizando PUT,ADD y DELETE en vez de hacerlo todo con post
Saludo Atentamente Dairon

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Dairón,

me parece que estás mezclando conceptos...

En el protocolo HTTP(S), las peticiones pueder ser GET, POST, DELETE y PUT, y en la práctica PUT y DELETE no se usan.

Por otra parte, una API REST(Ful) debe implementar mecanismos para las acciones de Alta, Baja, Modificación, Listado (lista y elemento), que no concuerdan con las acciones implementadas por HTTP, que no tiene un mecanismo para descubrir elementos.

Por esto verás que la mayoría de los servicios RESTful van a transmitir todo por POST, pero dependiendo de a quién llamen o de qué parámetro envíen, harás las tareas de Alta, Baja, Modificación, Listado (lista y elemento)

Esto se refuerza además porque los lenguajes del lado del servidor saben distinguir bien peticiones GET y POST, pero no suelen tener mecanismos para descubrir PUT y DELETE ... lo que hace que al final llames a diferentes scripts según la tarea o en caso de llamar a un solo script, distinguir por los parámetros qué acción ejecutar (porque de todas formas, vas a tener que hacer algo así para implementar el lsitado de colecciones y elementos).

Saludos cordiales!

0voto

dairon comentado

Maestro Tadei, entonces lo hago con post pero no se como enviarle o coger los datos enviados por el post, no se porque pero no me funciona. en el código que puse arriba no me da error pero tampoco me muestra el valor pasado por parámetro desde jquery.
Saludos Dairon

0voto

Leonardo-Tadei comentado

Hola @dairon,

podés debbuguear eso con la consola de Firefox, viendo el contenido de la petición AJAX que envías y viendo la respuesta que da tu script.

Si la función PHP que pones en tu pregunta es exactamente así, tenés que revisar que se esté ejecuntado esa función, y también el código que carga los valores recibidos a $this->post('name') para ver que se estén cargando los valores.

Saludos cordiales!

0voto

dairon comentado

Maestro @Leonardo-Tadei pongo mi js:

$.ajax({
                    type: "POST",
                    url: "<?php echo base_url();?>api/seccion/add/API-RSC/<?php echo $token;?>",
                    data: { name: "Nueva", id_idioma: "1" },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data, status, jqXHR) {
                        console.log(data);
                        },
                    error: function (jqXHR, status) {           
                        console.log(status);
                        }
                }); 

y en mi php:

 function add_post(){ # Inserta una nueva Sección           
        //$this->response(array($this->post('name')=>'success' ));
        echo "Nombre: ".$this->post('name');     
        //$this->response(array('status' => $this->post('name')));

    }

y todo sale bien pero no muestra dato, es como si no lo estuviera leyendo bien y no se como hacerlo.
yo uso para el server esta librería en codeigniter http://github.com/philsturgeon/codeigniter-restserver
Saludos Dairon

0voto

Leonardo-Tadei comentado

Si tu PHP es solo lo que mostrás, jamás va a funcionar porque nunca se llama a la función add_post()

En el enlace que envías, recorrí un poco el código, pero no encuentro en qué archivo está add_post() para ver el resto..

0voto

dairon comentado

está dentro de mi controllador Seccion

0voto

Leonardo-Tadei comentado

y la ruta? En controllers no veo ningún Seccion.php ni en library tampoco.

Serías tan amable de darme la ruta completa en este proyecto que contiene el código con la función add_post() ?

0voto

dairon comentado

No puedo poner el contenido de todo el fichero controller, maestro la ruta están bien ya lo probé y el programa funciona bien lo que no me funciona es tomar el dato que envió por post es decir cuando hago $this->post('name') no me recibe el dato y como prueba le cambio todo lo que es post por get y si funciona por eso es que no entiendo que está sucediendo.
Saludos Dairon

0voto

Leonardo-Tadei comentado

Podrías por favor poner la ruta específica al archivoq ue tiene el código?

Por ejemplo: https://github.com/chriskacerguis/codeigniter-restserver/blob/master/application/controllers/Rest_server.php que apunta a un script específico...

0voto

dairon comentado

Maestro estoy trabajando ne localhost, estoy usando ahora todos los metodos como get hasta lograr trabajar con post y me funcionan bien

0voto

Leonardo-Tadei comentado

Me alegra,

cuál era el problema? Cómo lo solucionaste?

0voto

dairon comentado

Maestro, solo cambie el resource de post a get y todo salió bien, el problema continúa existiendo y es con el post pero mientras sigo buscando la solución voy implementando con get y cuando lo resuelva cambio los verbos y ya ta ;)
Saludos Dairon

0voto

Leonardo-Tadei comentado

Entonces, el problema debe ser que estás asumiendo que las llamadas son GET, y cuando se envían POST no las estás leyendo...

0voto

dairon comentado

Maestro yo pasaba post y pedia post, entrava el programa al metodo y no daba ningun tipo de error pero tampoco cogia los datos entrados por parámetros.
Saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta