Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

283
Vistas
Obtener la variable $_POST como vacía mientras se obtiene todo correctamente con php://input

Creé una aplicación React desde la cual estoy llamando a mi servidor construido en PHP.

Así es como llamo a mi archivo PHP:

 const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: JSON.stringify({ name, username, password }), }; console.log(requestOptions); fetch('http://localhost/crud/requests/signup.php', requestOptions) .then(res => res.json()) .then(data => console.log(data));

Esto es lo que tengo en el archivo PHP:

 if (isset($_POST) && !empty($_POST)) { // do something }

Cuando imprimo la variable $_POST , obtengo una matriz vacía. Incluso $_RESPONSE está vacío.

Pero cuando traté de imprimir el flujo de entrada de esta manera:

 print_r(file_get_contents('php://input'));

Todo parece estar bien, ¿Alguien puede explicar por qué sucede esto? Traté de leerlo en la documentación y busqué en algunos foros y blogs, pero no quedé satisfecho con las respuestas.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El soporte de formulario incorporado de PHP solo puede analizar formularios de application/x-www-form-urlencoded y formularios de varias multipart/form-data formulario. Lo que en realidad está enviando es un objeto serializado en JSON, con el tipo MIME incorrecto de application/x-www-form-urlencoded .

Para enviar un application/x-www-form-urlencoded , use URLSearchParams en lugar de JSON.stringify :

 fetch('http://localhost/crud/requests/signup.php', { method: 'POST', body: new URLSearchParams({ name, username, password }), }) .then(res => res.json()) .then(data => console.log(data));

En este caso, no es necesario establecer explícitamente Content-Type : el navegador lo hará automáticamente . Para enviar una carga útil multipart/form-data (que es posible que deba hacer si desea cargar archivos más grandes), use un objetoFormData en su lugar.

Si desea enviar JSON después de todo, debe enviarlo con el tipo MIME correcto en el encabezado, application/json . En el lado de PHP, se resignará a analizar la carga útil manualmente usando json_decode .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda