Maison > Article > développement back-end > Plusieurs situations de transfert de valeur JSON et de réception PHP
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
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!