Cette fois, je vais vous présenter la méthode de conversion du tableau associatif du front-end ajax de json vers le backend. Quelles sont les précautions pour convertir le tableau associatif du front-end ajax de json en. Le backend est un cas pratique.
Beaucoup de gens ont constaté qu'Ajax ne peut pas transmettre des tableaux directement lors de la transmission de valeurs, et la plupart d'entre eux sur Baidu ne peuvent pas être utilisés
J'ai donc pensé à une méthode :
Étape du chapitre one : Convertir le tableau en jsonstring
Il s'agit d'un problème technique. Baidu a déclaré que JSON.stringify(arr) ne peut pas convertir les tableaux associatifs, même les index Les tableaux en ont également. de nombreux défauts
J'ai donc spécialement encapsulé une fonction jsrécursive
function arrToJSON(arr) { var json = {}; for (var i in arr) { var vo=arr[i]; if (typeof arr[i] == "object") { json[i]={}; json[i] = arrToJSON(vo); } else { json[i] =vo; } } return JSON.stringify(json); }
Tant que vous passez dans jstableau multidimensionnel , vous pouvez tout analyser tableaux en chaînes
pour que les valeurs puissent être transmises en ajax~~~
Étape 2 :
Mais les caractères json convertis de cette manière La chaîne est incomplète et le tableau entier ne peut pas être analysé directement
Comme le montre la figure
vous pouvez constater que cette fonction donnera la chaîne sous-json de niveau inférieur à Utilisez des barres obliques pour vous échapper. Plus vous descendez, plus il y a de barres obliques
Lorsque l'arrière-plan json_decode traite le premier niveau, le deuxième niveau est en fait toujours une chaîne json_decode
Donc l'arrière-plan. a besoin d'un nouveau La fonction de décodage est utilisée pour analyser cette chaîne json
/** * 解析前台传来的不完整json字符串 */ private function json_decode_x($str) { $data_arr = array(); $arr = json_decode($str, 1); foreach ($arr as $x => $a) { if (preg_match('/":/', $arr[$x])) { //匹配 $data_arr[$x] = $this->json_decode_x($a); } else { $data_arr[$x] = $a; } } return $data_arr; }
Dans ce cas, la chaîne json est reçue en arrière-plan et analysée avec cette fonction, un tableau multidimensionnel complet et correct peut être obtenu
Parce que pour mes besoins professionnels, il n'y a pas de chaîne comme /", vous pouvez donc l'utiliser pour déterminer si la sous-chaîne a toujours une chaîne json qui peut être analysée. Si elle est utilisée dans un projet réel, veuillez modifier le jugement régulier
Bien sûr, ceux qui en sont capables peuvent directement changer la première étape en une chaîne json complète, afin que l'arrière-plan puisse directement utiliser un json_decode pour analyser
Je vous crois J'ai maîtrisé la méthode après avoir lu le cas dans cet article. Veuillez faire attention à php pour des choses plus excitantes sur le site chinois
Lecture recommandée :
Comment faire. empêcher le bouillonnement JS et le comportement par défaut du navigateur
Que diriez-vous de JS Actualiser la page parent
JS et image de synthèse de toile pour faire fonctionner l'affiche du compte public WeChat
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!