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

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

韦小宝
Freigeben: 2023-03-17 17:54:01
Original
3569 Leute haben es durchsucht

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
Nach dem Login kopieren

(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);
        } // 注意不要在此行增加逗号
    });
}
Nach dem Login kopieren

< wird nicht zu js hinzugefügt 🎜>

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

$json = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  // empty($json) 为 1
Nach dem Login kopieren

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

$json = file_get_contents("php://input");   // empty($json) 为 0
Nach dem Login kopieren
Nach dem Login kopieren

Fall 2:

Attribut contentType zu js hinzufügen: „application/json; charset=utf-8“,

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

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

$json = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  // empty($json) 为 0
Nach dem Login kopieren

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

$json = file_get_contents("php://input");   // empty($json) 为 0
Nach dem Login kopieren
Nach dem Login kopieren
(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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Aktuelle Ausgaben
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage