PHP에 대한 AngularJS HTTP 게시: "정의되지 않은" 값 이해
많은 AngularJS 사용자가 PHP에 POST 요청을 보낼 때 문제가 발생합니다. POST 매개변수에 대한 "정의되지 않은" 값. 이 문서에서는 근본 원인을 자세히 살펴보고 이 문제를 해결하기 위한 솔루션을 제공합니다.
콘텐츠 유형 헤더 기본값
이 문제의 근본 원인은 기본 "Content- HTTP POST 요청을 위해 AngularJS에서 사용하는 "유형" 헤더입니다. 기본적으로 AngularJS는 이 헤더를 "application/json"으로 설정하여 요청 본문이 JSON 데이터로 직렬화되어야 함을 나타냅니다.
양식 인코딩 데이터와 JSON
그러나 PHP 코드에 양식으로 인코딩된 데이터(예: "필드 이름=값&필드 이름=값" 형식의 데이터)가 필요한 경우 $_POST 배열을 제대로 채울 수 없습니다. 이 문제를 해결하려면 원시 입력 스트림을 JSON으로 읽도록 PHP 스크립트를 변경하거나 양식 인코딩 데이터를 보내도록 AngularJS 코드를 조정하면 됩니다.
해결책 1: PHP에서 원시 입력을 JSON으로 읽기
이 솔루션에는 원시 입력 데이터를 JSON으로 읽고 역직렬화한 후 수동으로 POST 값을 추출하도록 PHP 코드를 수정하는 작업이 포함됩니다. 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
해결책 2: AngularJS에서 양식 인코딩 데이터 보내기
에서 $_POST 기능을 사용하려는 경우 PHP에서는 쿼리 문자열을 수동으로 생성하여 AngularJS 요청의 데이터로 보낼 수 있습니다. 쿼리 문자열은 "필드 이름=값&필드 이름=값" 형식이어야 하며 URL로 인코딩되어야 합니다. JavaScript에서 encodeURIComponent()를 사용하여 적절한 인코딩을 보장할 수 있습니다.
위 내용은 PHP에서 AngularJS HTTP POST 매개변수가 정의되지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!