2 votes

Erreur de liste d'éléments après la balise manquante

Je suis en train d'utiliser ajax pour obtenir ce que l'utilisateur a sélectionné dans une zone "select" et l'envoyer à un fichier php. Ensuite, j'ai besoin de rendre les résultats d'une requête, avec ces résultats de sélection, téléchargeables. Donc pour résumer, lorsqu'ils cliquent sur quelque chose, jquery/ajax l'envoie à php. php renvoie une liste de choses à sélectionner à nouveau, cela se répète jusqu'à ce qu'ils aient sélectionné cinq options. Ensuite, en dessous des cases de sélection, un lien apparaît disant exportation(téléchargement). Ce lien devrait les envoyer à une fonction php export() avec un get indiquant le nom de la procédure stockée que je dois exporter. Avec 5 résultats de sélection en tant que paramètres dans la procédure stockée. J'espère que c'est clair. Voici mon code.

PHP envoie des résultats au fichier js -------

 $jsStr = '[';
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $jsStr .= '["'. $row->count_result .'","'. $row->count_desc .'","'. $row->count_SP .'",'. $cn .','. $gp .','. $co .','. $st .','. $dp .']';
        }
        $jsStr = substr($jsStr,0,-1);
    }
    $jsStr .= ']';

    return 'changeResults('. $jsStr .');';

JS ----------------

 function changeResults (data) {
    $('#systems').html(data[0][0] +' - '+ data[0][1] +' Export');
    $('#users').html(data[1][0] +' - '+ data[1][1] +' Export');
}

Erreur que je reçois de Firebug

manquant ] après une liste d'éléments [Pause sur cette erreur]

...NV02) - Utilisateurs comptés dans la portée sélectionnée","usr_disc_Inv_usr_content",1,1,1,1,1])

Dites-moi s'il y a quelque chose d'obscur, Merci !

4voto

Joe Frambach Points 13853

Nettoyons tout cela en profondeur!

    $jsArr = array();
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $jsArr[] = array(
                $row->count_result,
                $row->count_desc,
                $row->count_SP,
                $cn,
                $gp,
                $co,
                $st,
                $dp,
            );
        }
    }
    $jsStr = json_encode($jsArr);

    return 'changeResults('. $jsStr .');';

3voto

Steve Points 45

La ligne :

$jsStr = substr($jsStr,0,-1);

Vous supprimez le ] de la fin de votre chaîne. C'est pourquoi. Pas sûr pourquoi cette ligne est là.

3voto

zpea Points 1054

Je ne connais pas vraiment JavaScript ou tout autre langage que vous utilisez. Mais il me semble que vous enlevez le dernier ] ajouté dans la boucle foreach par

$jsStr = substr($jsStr,0,-1);

Je pense que vous aviez une virgule à la fin de la ligne dans le foreach. Comme ceci:

foreach ($query->result() as $row) {
    $jsStr .= '["'. $row->count_result .'","'. $row->count_desc .'","'. $row->count_SP .'",'. $cn .','. $gp .','. $co .','. $st .','. $dp .'],';
}

De cette manière, cela me semble plus logique. Pour obtenir le bon regroupement, vous devez soit remettre cette virgule (qui je pense est la bonne notation) soit supprimer l'opération substr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X