Maison  >  Article  >  interface Web  >  Tableau associatif frontal Ajax vers json vers méthode d'arrière-plan

Tableau associatif frontal Ajax vers json vers méthode d'arrière-plan

php中世界最好的语言
php中世界最好的语言original
2018-03-16 10:28:442162parcourir

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

Tableau associatif frontal Ajax vers json vers méthode darrière-plan

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!

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