je suis en train d'essayer de convertir un tableau php en tableau js mais il me met une erreur que je ne comprend pas. Je cherche depuis hier et pas moyen de trouver mon erreur. Le code js pour créer l'array me semble correct et pourtant il l'est pas Je mets toujours le code php, on sait jamais que l'erreur vienne de là mais la raison de l'erreur dans le js devrait me suffire pour corriger le php
var testArray = new Array();
//var testArray["trolls"] = new Array();
var testArray["trolls"][0] = new Array();
testArray["trolls"][0]["ID"] = "9948577";
testArray["trolls"][0]["nom"] = "moi";
var testArray["trolls"][1] = new Array();
testArray["trolls"][1]["ID"] = "9948578";
testArray["trolls"][1]["nom"] = "moi2";
var testArray["montsre"] = new Array();
var testArray["montsre"][0] = new Array();
testArray["montsre"][0]["ID"] = "994857775";
testArray["montsre"][0]["N"] = "-34";
testArray[0] = 34;
testArray[1] = "RuTubes";
L'erreur(ligne en commentaire dans le code javascript):
Erreur : missing ; before statement
Fichier Source : http://localhost/bench/
Ligne : 6, Colonne : 5
Code Source :
var testArray["trolls"] = new Array();
Merci à ceux qui trouverons ou essayerons de trouver.
var testArray = new Array();
testArray["trolls"] = new Array();
testArray["trolls"][0] = new Array();
testArray["trolls"][0]["ID"] = "9948577";
testArray["trolls"][0]["nom"] = "moi";
testArray["trolls"][1] = new Array();
testArray["trolls"][1]["ID"] = "9948578";
testArray["trolls"][1]["nom"] = "moi2";
testArray["montsre"] = new Array();
testArray["montsre"][0] = new Array();
testArray["montsre"][0]["ID"] = "994857775";
testArray["montsre"][0]["N"] = "-34";
testArray[0] = 34;
testArray[1] = "RuTubes";
Plus d'erreur en tout cas, et je sais accéder à mon tableau. Merci beaucoup
Pour ceux qui veulent le php, j'ai corrigé la fonction comme ceci:
<?php
function array2js($phpArray,$jsName,$i=0)
{
if($i==0)
$output = 'var '.$jsName.' = new Array();
';
else
$output = ''.$jsName.' = new Array();
';
foreach($phpArray AS $k=>$v)
{
//treat key
if(is_string($k))
$k = '"'.$k.'"';
if( is_array($v) ) $output .= array2js($v,$jsName.'['.$k.']',1);
else
{
//treat value
if(is_bool($v))
{
if($v) $v = 'true';
else $v = 'false';
}
elseif(is_string($v))
$v = '"'.$v.'"';
elseif(is_int($v) || is_float($v))
$v = $v;
else
$v = '"This value was a php object or ressource(not treated)"';
//output
$output .= $jsName.'['.$k.'] = '.$v.';
';
}
}
return $output;
}
?>
Edit: ca marche plus en fait
J'utilise cette fonction sur un tableau bien plus grand cette fois donc je le copierai pas mais il me dit que ma variable est pas définie quand j'essaye de l'afficher
Soit dit en passant. Il faudrait que tu apportes des modifications à plusieurs endroits de ton code, afin de faire la différence entre un Object et un Array.
Les Object sont des tableaux associatifs (qui associent à une clé (=un texte) une valeur (=un autre texte)).
Les Array, en revanche, associent une clé numérique à une valeur.
Donc écrire ceci est faux :
var machin = new Array();
machin["truc"] = "bidule";
Il faut écrire :
var machin = new Object();
machin["truc"] = "bidule";
Aussi, tu serais peut-être intéressé d'apprendre qu'il existe des notations littérales pour les Objet et les Array.
var o = new Object();
o["machin"] = "bidule";
o["truc"] = "chose";
// peut aussi s'écrire
var o = {
"machin" : "bidule",
"true" : "chose"
};
var a = new Array();
a[0] = "machin";
a[1] = "truc";
// peut aussi s'écrire :
var a = [
"machin",
"truc"
];
Tu gagnes considérablement en caractères.
Exemple avec la première vue :
Ah...donc un array associatif en javascript est en fait un objet et non un array?
Bon ben vais modifier mon code et je reviens
En passant, une idée pour changer les " en \"? Je pensais à faire avec un preg_replace dans ma fct php mais peut-être qu'il y à plus rapide...
Edit1: ça marche Merci d'avoir pointé ce problème de guillemets. Je vais me pencher sur cette histoire de différence objet/array maintenant...ça va pas être simple
Vais éviter addslashes, je dois juste échapper les " pour que ça me ferme pas mes chaines de caractères. Sinon les autres symboles apparaîtraient avec un \ devant et ça je veux pas. Ca me ferait du boulot en plus pour les retirer en js après
Oublies, j'ai rien dit Je viens de tester avec d'autres caractères et ça va bien en fait
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
M@t
M@t
M@t
M@t
M@t
M@t