Maison > développement back-end > tutoriel php > Plusieurs situations de transfert de valeur JSON et de réception PHP

Plusieurs situations de transfert de valeur JSON et de réception PHP

韦小宝
Libérer: 2023-03-17 17:54:01
original
3478 Les gens l'ont consulté

Dans le développement PHP, nous rencontrerons un type de données appelé json Ce type est similaire à un tableau mais pas à un tableau. Aujourd'hui, nous parlerons de la réception PHP json. tapez les données, sans plus tarder, voyons comment PHP gère json !

À l'aide du réseau backend de Chrome, nous avons analysé plusieurs situations lors de la publication de données json sur PHP via $.ajax() de JQuery :

Impossible d'obtenir les données json dans PHP via $_POST et $_REQUEST, c'est-à-dire

$json = $_POST['json'];  // empty($json) 为1
Copier après la connexion

(Remarque : PHP ne reconnaît que le type de données standard application/x-www.form-urlencoded par défaut, donc pour du contenu tel que text/xml ou soap ou application/octet-stream ne peuvent pas être analysés. Si vous utilisez le tableau $_POST pour le recevoir, il échouera)

Cas 1 :

L'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);
        } // 注意不要在此行增加逗号
    });
}
Copier après la connexion

< n'est pas ajouté à js 🎜>

Les données ne peuvent pas être obtenues après avoir utilisé $GLOBALS['HTTP_RAW_POST_DATA'], c'est-à-dire

$json = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  // empty($json) 为 1
Copier après la connexion

en utilisant file_get_contents("php://input"); Vous pouvez obtenir des données, c'est-à-dire

$json = file_get_contents("php://input");   // empty($json) 为 0
Copier après la connexion
Copier après la connexion

Cas 2 :

Ajouter l'attribut contentType à js : "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);
            } // 注意不要在此行增加逗号
        });
    }
Copier après la connexion

Utilisez $ Les données peuvent être obtenues après GLOBALS['HTTP_RAW_POST_DATA'], c'est-à-dire

$json = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  // empty($json) 为 0
Copier après la connexion

Utilisez file_get_contents("php://input"); les données, c'est-à-dire

$json = file_get_contents("php://input");   // empty($json) 为 0
Copier après la connexion
Copier après la connexion
(Remarque : php://input permet de lire les données brutes du POST. Par rapport à $HTTP_RAW_POST_DATA, il met moins de pression sur la mémoire et ne nécessite aucune paramètres php.ini spéciaux. php://input ne peut pas être utilisé pour enctype="multipart/form-data". )

Ce qui précède est tout le contenu de cet article, j'espère qu'il pourra être utile à tout le monde. !

Recommandations associées :

Explication détaillée des exemples d'utilisation des fonctions liées à php json

PHP JSON

Discutez de la solution détaillée aux caractères chinois tronqués dans PHP JSON

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal