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

韦小宝
韦小宝original
2018-05-28 13:53:563491parcourir

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

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

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

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

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

Cas 2 :

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

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

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

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

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

Déclaration:
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
Article précédent:Pagination PHP (limite)Article suivant:Pagination PHP (limite)