>  기사  >  백엔드 개발  >  JSON 값 전송 및 PHP 수신의 여러 상황

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

韦小宝
韦小宝원래의
2018-05-28 13:53:563402검색

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

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