>  기사  >  백엔드 개발  >  PHP가 Ajax 데이터를 수신할 수 없으면 어떻게 해야 합니까?

PHP가 Ajax 데이터를 수신할 수 없으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2020-07-25 10:01:563333검색

Ajax 데이터를 수신하지 못하는 PHP에 대한 해결 방법: 1. 선언 코드를 "Content-Type=application/x-www-form-urlencoded"로 추가합니다. 2. 양 당사자가 합의한 형식에 따라 문자열로 직렬화합니다.

PHP가 Ajax 데이터를 수신할 수 없으면 어떻게 해야 합니까?

권장: "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.