Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere Situationen der JSON-Wertübertragung und des PHP-Empfangs

Mehrere Situationen der JSON-Wertübertragung und des PHP-Empfangs

韦小宝
韦小宝Original
2018-05-28 13:53:563414Durchsuche

In der PHP-Entwicklung werden wir auf einen Datentyp namens json stoßen. Dieser Typ ähnelt einem Array, aber nicht einem Array. Heute werden wir über den Empfang von json durch PHP sprechen Geben Sie Daten ein, schauen wir uns ohne weitere Umschweife an, wie PHP mit json umgeht!

Mithilfe des Backend-Netzwerks von Chrome haben wir mehrere Situationen analysiert, in denen JSON-Daten über $.ajax() von JQuery an PHP gesendet wurden:

JSON-Daten konnten nicht eingelesen werden PHP über $_POST und $_REQUEST, also

$json = $_POST['json'];  // empty($json) 为1

(Hinweis: PHP erkennt standardmäßig nur den Standarddatentyp application/x-www.form-urlencoded, also für Inhalte wie text/xml oder Soap oder application/octet-stream können nicht analysiert werden, wenn Sie das Array $_POST zum Empfangen verwenden.

Fall 1:

Das Attribut 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);
        } // 注意不要在此行增加逗号
    });
}

Daten können nicht abgerufen werden, nachdem $GLOBALS['HTTP_RAW_POST_DATA'] verwendet wurde, also

$json = $GLOBALS['HTTP_RAW_POST_DATA'];  // empty($json) 为 1

mit file_get_contents("php://input"); Sie können Daten abrufen, das heißt

$json = file_get_contents("php://input");   // empty($json) 为 0

Fall 2:

Attribut contentType zu js hinzufügen: „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);
            } // 注意不要在此行增加逗号
        });
    }

Verwenden Sie $ Die Daten können nach GLOBALS['HTTP_RAW_POST_DATA'] abgerufen werden, d. h.

$json = $GLOBALS['HTTP_RAW_POST_DATA'];  // empty($json) 为 0

Verwenden Sie file_get_contents("php://input"); die Daten, also

$json = file_get_contents("php://input");   // empty($json) 为 0
(Hinweis: php://input ermöglicht das Lesen der Rohdaten von POST. Im Vergleich zu $HTTP_RAW_POST_DATA belastet es den Speicher weniger und erfordert keinen spezielle php.ini-Einstellungen. php://input kann nicht für enctype="multipart/form-data" verwendet werden)

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er kann für alle hilfreich sein !

Verwandte Empfehlungen:

Detaillierte Erläuterung von Anwendungsbeispielen für PHP-JSON-bezogene Funktionen

PHP JSON

Besprechen Sie die detaillierte Lösung für chinesische verstümmelte Zeichen in PHP JSON

Das obige ist der detaillierte Inhalt vonMehrere Situationen der JSON-Wertübertragung und des PHP-Empfangs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Paging (Limit)Nächster Artikel:PHP-Paging (Limit)