Ajax 데이터를 수신하지 못하는 PHP에 대한 해결 방법: 1. 선언 코드를 "Content-Type=application/x-www-form-urlencoded"로 추가합니다. 2. 양 당사자가 합의한 형식에 따라 문자열로 직렬화합니다.
권장: "PHP Tutorial"
ajax
JS에서 제출한 json 값을 PHP가 수신할 수 없는 문제에 대한 솔루션은 contentType = application/x-www-form-urlencoded를 지정해야 합니다. 전송된 json 데이터는 PHP의 $_POST에 의해 수신됩니다.
jQuery의 contentType 기본값: "application/x-www-form-urlencoded"(서버에 정보를 보낼 때의 콘텐츠 인코딩 유형). 기본값은 대부분의 경우에 적합합니다. 콘텐츠 유형을 $.ajax()에 명시적으로 전달하면 확실히 서버로 전송됩니다(전송할 데이터가 없더라도).
1. post 메소드를 사용하여 전송하는 경우 Content-Type = application/x-www-form-urlencoded라는 문이 있어야 합니다. 그렇지 않으면 PHP는 수신 데이터를 $_POST 배열로 구문 분석하지 않습니다.
는 contentType = application/json을 선언하고 Ajax는 자동으로 Content-Type = application/x-www-form-urlencoded 선언을 추가합니다. 이 두 문장은 PHP를 혼란스럽게 만들 것입니다.
2. 전송된 데이터는 js 객체인 {data:jsonData}입니다. 성공적으로 전송되더라도 PHP는 객체를 인식하지 못하기 때문에 이를 구문 분석할 수 없습니다. 외부 세계와 교환되는 모든 데이터 구조는 양측이 합의한 형식의 문자열로 직렬화되어야 합니다
Js.Ajax가 js 객체를 JSON 형식 문자열로 변환할 수 있다고 가정하세요
그리고 contentType = application/json 선언도 제거했습니다.
그러면 $_POST
에서 해당 JSON 문자열이 키로 포함된 요소를 볼 수 있습니다. contentType = application/json
선언을 제거하고 싶지 않다면 file_get_contents('php://input)을 사용할 수도 있습니다. ') 들어오는 콘텐츠 가져오기
php://input을 사용하면 POST의 원본 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA보다 메모리에 대한 부담이 적고 특별한 php.ini 설정이 필요하지 않습니다. php://input은 enctype=”multipart/form-data”와 함께 사용할 수 없습니다.
위 내용은 PHP가 Ajax 데이터를 수신할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!