JSON 값 전송 및 PHP 수신의 여러 상황

韦小宝
풀어 주다: 2023-03-17 17:54:01
원래의
3299명이 탐색했습니다.

PHP 개발에서는json이라는데이터 유형을 만나게 됩니다. 이 유형은 배열과 비슷하지만 배열이 아닙니다. 오늘은json유형의 데이터를 수신하는 PHP에 대해 이야기하겠습니다. PHP가json을 어떻게 처리하는지 살펴보겠습니다!

Chrome의 백엔드 네트워크를 사용하여JQuery의 $.ajax()를 통해 json 데이터가 PHP에 게시될 때 여러 상황을 분석했습니다.

PHP에서 $_POST 및 $_REQUEST를 통해 json 데이터를 얻을 수 없습니다. 즉

$json = $_POST['json']; // empty($json) 为1
로그인 후 복사

(참고: PHP는 기본적으로 application/x-www.form-urlencoded 표준 데이터 유형만 인식합니다. 따라서 text/xml, SOAP 또는 application/octet-stream과 같은 콘텐츠는 구문 분석할 수 없습니다. $_POST 배열을 사용하면 실패합니다.

사례 1:

js가 contentType: "application/json; charset=utf-8",

var submit_sync = function() { $.ajax({ type: "post", url: 'add-post-json.php', async: false, // 使用同步方式 // 1 需要使用JSON.stringify 否则格式为 a=2&b=3&now=14... // 2 需要强制类型转换,否则格式为 {"a":"2","b":"3"} data: JSON.stringify({ a: parseInt($('input[name="a"]').val()), b: parseInt($('input[name="b"]').val()), now: new Date().getTime() // 注意不要在此行增加逗号 }), dataType: "json", success: function(data) { $('#result').text(data.result); } // 注意不要在此行增加逗号 }); }
로그인 후 복사

속성을 추가하지 않습니다. $GLOBALS['HTTP_RAW_POST_DATA'], 즉

$json = $GLOBALS['HTTP_RAW_POST_DATA']; // empty($json) 为 1
로그인 후 복사

file_get_contents("php://input")를 사용하여 데이터를 얻을 수 있습니다. 즉,

$json = file_get_contents("php://input"); // empty($json) 为 0
로그인 후 복사
로그인 후 복사

2:

contentType 속성을 추가합니다: "application/json; charset=utf-8",

var submit_sync = function() { $.ajax({ type: "post", url: 'add-post-json.php', async: false, // 使用同步方式 // 1 需要使用JSON.stringify 否则格式为 a=2&b=3&now=14... // 2 需要强制类型转换,否则格式为 {"a":"2","b":"3"} data: JSON.stringify({ a: parseInt($('input[name="a"]').val()), b: parseInt($('input[name="b"]').val()), now: new Date().getTime() // 注意不要在此行增加逗号 }), contentType: "application/json; charset=utf-8", dataType: "json", success: function(data) { $('#result').text(data.result); } // 注意不要在此行增加逗号 }); }
로그인 후 복사

$GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 데이터를 가져옵니다. 즉,

$json = $GLOBALS['HTTP_RAW_POST_DATA']; // empty($json) 为 0
로그인 후 복사

file_get_contents("php://input")를 사용하여 데이터를 가져옵니다. 즉

$json = file_get_contents("php://input"); // empty($json) 为 0
로그인 후 복사
로그인 후 복사

(참고: php://input을 사용하면 POST의 원시 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA에 비해 더 많은 메모리를 가져옵니다. 문제 스트레스가 적고 특별한 php.ini 설정이 필요하지 않습니다. php://input은 enctype="multipart/form-data"에 사용할 수 없습니다.

이 기사는 이것이 전부입니다. 도움이 되기를 바랍니다. 모두가 도움을 제공합니다! PHP JSON 관련 기능의 사용 예에 대한 설명 된 관련 권장 사항 : PHP JSON 중국인 갈색 코드에 대한 솔루션에 대한 솔루션 json json hums the Advern

위 내용은 JSON 값 전송 및 PHP 수신의 여러 상황의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!