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

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

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 학습자의 빠른 성장을 도와주세요!