[Resuelto] No puedo acceder a parametro de mi peticion $http en mi backend PHP

Iniciado por Razzari, 16 Agosto 2017, 00:29 AM

0 Miembros y 1 Visitante están viendo este tema.

Razzari

Hola foro, basicamente el titulo describe mi problema, aca va el codigo:



ese es mi javascript, esoty utilizando angularJs como framework en el frontend, como ven en la consola, logueo lo que me devuelve y dice :
"<b>Notice</b>:  Undefined index: name in <b>C:\xampp\htdocs\api.rest.security\animalesAPI.php</b> on line <b>26</b><br />"

y este es mi codigo php:




Saludos, la verdad estoy desorientado
"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso

engel lex

#1
edito

estás pasando por method GET y leyendo POST
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Razzari

#2
ya cambie las miniaturas, si me di cuenta cuando subi las fotos que estaba usando GET corri a cambiarlo, pero sigue logueandome el mismo error  :o


https://fotos.subefotos.com/27f4ae512dd397e45f92b0d60a0e7cf3o.png

Voy a seguir revisando, pero siempre accedí a mis peticiones por post en php con $_POST[''],.esta vez no se que sucede


· Las imagenes no deben ser mayores a 800x600
>aquí las reglas del foro
-Engel Lex
"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Razzari

#4
Pero bueno, era para ver si estaba obviando algo y otros ojos veian lo que yo no:

Consola:

https://fotos.subefotos.com/b3b594cbf82f373fbffc6432ee5f3bd3o.png

javascript:

https://fotos.subefotos.com/8c089838229b372cecb52a9fb8202df0o.png

PHP:


$name = $_POST['name'];
echo $name;



Voy a seguir viendo y revisando  :-\
"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso

engel lex

#5
te soy sincero, poco trabajé con angular... no me gustó... siento que todo lo que hace, más facil lo puedo hacer yo mismo y mano... pero cada quien trabaja como más le place en la cama... XD

pero leo la documentación

https://docs.angularjs.org/api/ng/service/$http

sobre los argumentos de la función
Citarparams – {Object.<string|Object>} – Map of strings or objects which will be serialized with the paramSerializer and appended as GET parameters.

creo que deberías cambiar params por data
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Razzari


$http({
                method: 'POST',
                url: 'http://localhost:8080/api.rest.security/',
                data:{
                    'name' : "ejem",
                }
            }).then(function successCallback(response) {
                //token=response.data;
                console.log(response.data);
                //getData();
            }, function errorCallback(response) {

            });
        }



Estoy usando data: ahora y tampoco, voy a seguir sudando con semejante tonteria y  cunado lo resuelva subo el error y/o   solucion
"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso

engel lex

puedes usar $http.post por lo que veo eso puede funcionar, mira allí mismo la doc
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

[u]nsigned

Hola, el modulo $http de angular hace peticiones de tipo application/json, y PHP solo rellena la variable global $_POST cuando la peticion llega en formato application/x-www-form-urlencoded o multipart/form-data.

La solucion mas facil es indicarle a PHP que en lugar de leer desde $_POST tome los valores directamente en formato raw desde el stream php://input

Código (php) [Seleccionar]

<?php
//Leemos el stream raw y lo guardamos en la variable $postdata
$postdata file_get_contents("php://input");
//Como dicha variable esta en formato json debemos mapearla a un Array usando json_decode
$request json_decode($postdata);
//Imprimo el array completo
echo print_r($requestfalse);
?>




Espero que te sirva de ayuda. yo me canse de renegar con esto cuando usaba Angular 1.6 + CodeIgniter 3

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Razzari

[quote author=nsigned link=topic=473521.msg2137945#msg2137945 date=1503674012]
Hola, el modulo $http de angular hace peticiones de tipo application/json, y PHP solo rellena la variable global $_POST cuando la peticion llega en formato application/x-www-form-urlencoded o multipart/form-data.

La solucion mas facil es indicarle a PHP que en lugar de leer desde $_POST tome los valores directamente en formato raw desde el stream php://input

Código (php) [Seleccionar]

<?php
//Leemos el stream raw y lo guardamos en la variable $postdata
$postdata file_get_contents("php://input");
//Como dicha variable esta en formato json debemos mapearla a un Array usando json_decode
$request json_decode($postdata);
//Imprimo el array completo
echo print_r($requestfalse);
?>




Espero que te sirva de ayuda. yo me canse de renegar con esto cuando usaba Angular 1.6 + CodeIgniter 3
[/quote]


Funciono a la perfección, estuve leyendo un poco de documentación de esta tema y es la manera correcta de hacerlo !!!
Espero que le sea de ayuda a alguien mas

Gracias y saludos !!!!!!    ;D ;D ;D ;D ;D ;D ;D
"Los ordenadores son inutiles, solo pueden darte respuestas" Pablo Picasso