1. 문제
폼을 제출한 후 request->param() 또는 $this->request->param()을 통해 게시물 데이터를 얻을 수 없으며 빈 배열을 얻습니다.
2. 문제 원인
양식에 enctype 속성이 설정되지 않았습니다
양식 제출 시 enctype 속성이 설정되지 않은 경우 기본 데이터 전송 방법은 application/x입니다. -www-form-urlencoded. 이제 데이터는 요청 본문 대신 HTTP 요청 헤더에 배치됩니다. 따라서 post 데이터를 가져올 때는 $this->request->post() 또는 request()->post()를 사용해야 합니다.
인터페이스 호출 시 요청 헤더가 설정되지 않습니다
인터페이스 호출 시 Content-Type: application/json과 같은 해당 요청 헤더를 설정해야 합니다. 그렇지 않으면 서버가 데이터를 구문 분석할 수 없습니다. Content-Type이 설정되지 않은 경우 서버는 기본적으로 application/x-www-form-urlencoded로 설정되며 이때 게시물 데이터는 요청 본문이 아닌 http 요청 헤더에 배치되므로 결과를 얻을 수 없습니다. 데이터를 올바르게 게시하십시오.
3.해결책
enctype 속성을 설정
폼에 enctype="multipart/form-data"를 추가하면 게시물 데이터를 올바르게 가져올 수 있습니다.
요청 헤더 설정
인터페이스를 호출할 때 컬을 사용하여 요청 헤더를 설정할 수 있습니다. 샘플 코드는 다음과 같습니다.
$data = array( 'username' => 'admin', 'password' => '123456' ); $url = 'http://www.example.com/login'; $ch = curl_init(); $header = array( 'Content-Type: application/json', 'Content-Length: '.strlen(json_encode($data)) ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); curl_close($ch);
위 내용은 thinkphp에서 포스트 데이터를 얻을 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!