Post HTTP angular a PHP: cómo lidiar con valores POST indefinidos
En AngularJS, realizar solicitudes POST HTTP a puntos finales de PHP a veces puede dar como resultado resultados indefinidos Valores POST en el lado del servidor. Esto puede ocurrir cuando hay una discrepancia entre el formato de datos esperado y los datos reales enviados por la aplicación Angular.
Para resolver este problema, es fundamental asegurarse de que el encabezado Content-Type esté configurado correctamente. De forma predeterminada, AngularJS establece este encabezado en "aplicación/json". Sin embargo, si envía datos codificados en forma, esto debe anularse.
En el código proporcionado, la siguiente línea establece el encabezado Content-Type en "application/x-www-form-urlencoded; charset=UTF-8":
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
Sin embargo, esto requiere modificar los datos enviados para que coincidan con el formato codificado del formulario. En lugar de enviar los datos como un objeto, es necesario convertirlos en una cadena de consulta. Esto se puede hacer usando jQuery.serialize() o creando manualmente la cadena de consulta con encodeURIComponent().
Como alternativa, si prefiere usar la funcionalidad $_POST de PHP, puede mantener la configuración predeterminada del encabezado y modificar el Código PHP para leer la entrada sin formato del cuerpo de la solicitud y decodificar el JSON. Esto se puede lograr con el siguiente código:
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Al alinear el formato de datos y la configuración del encabezado, puede asegurarse de que los valores POST se reciban correctamente en el lado PHP.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3