Maison > Article > développement back-end > Problème de conversion d'encodage entre json et PHP
Cet article présente principalement le problème de conversion d'encodage entre json et PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
<br/>
<br/>
var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
$.ajax({ type:"post", url:url, data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据 success:function(res){ console.log(res); } });
map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出
Question
$1 La première méthode :
echo, vous devez l'encoder vous-même puis sortir la chaîne json$1.1 L'arrière-plan reçoit les données de premier plan et renvoie les mêmes données
$map = $_POST['arr'];//从前台传递过来的$map $map = json_decode($map);//json对象 解码之后给php后台使用 ..... $map = json_encode($map);//对json数组进行编码生成json字符串 echo $map; //输出$map到前台$1.2 L'arrière-plan crée le programme et renvoie au premier plan
$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码 echo $mapN;$1.3 Opération au premier plan
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
$2 Deuxième méthode :
ajaxreturn , pass Les tableaux n'ont pas besoin d'être codés. Par défaut, la forme chaîne de json est transmise, mais eval est requis pour la conversion dans le frontend. Convertissez la chaîne json en tableau.
$map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后 $this->ajaxReturn($map,'json');
$mapN = array("name"=>"zhangwei"); $this->ajaxReturn($mapN,'json');// 此时不需要json_encode() ,前台通过mapN.name 或者mapN['name']输出2,3 $ Opération à la réception
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
Supplément de 3 $ :
La différence entre echo et ajaxreturn concernant le transfert de données de l'arrière-plan au premier plan : echo n'encodera pas le tableau php dans un format de transfert json - json string typeajaxreturn La fonction json_encode sera automatiquement appelée pour l'encodage$4 Remarque :
Ici, l'arrière-plan peut renvoyer des données au succès du front-end : fonction (res) via echo ou ajaxreturn
echo en arrière-plan, vous pouvez directement sortir la chaîne à la résolution de la réception,
Nom du tableau ['keyname'] Ou appelez
en utilisant
Conseils :
1. Passez la chaîne json à l'arrière de la réception (elle-même est un tableau, mais elle est convertie en chaîne json viastringify à la réception). En arrière-plan, json_decode est nécessaire pour le décodage, et il peut être utilisé une fois converti en tableau json, en appelant la méthode tableau. name->key
2. Si le tableau créé en arrière-plan est converti en chaîne json via json_encode, une fois les données transmises à la réception, elles doivent être transmises viares = eval("("+res+")"); Convertir en tableau json, méthode d'appel frontal : nom du tableau['keyname'] ou Array name.keyname
Recommandations associées :Conversion d'encodage de caractères php
Comment résoudre les caractères tronqués en php conversion d'encodage
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!