2010-07-14 7 views
0

Je veux juste obtenir mon tableau PHP à un tableau JS, qu'est-ce que je fais mal ici?Tableau PHP au tableau JS avec jQuery et json_encode

PHP:

// get all the usernames 
$login_arr = array(); 
$sql = "SELECT agent_login FROM agents"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    array_push($login_arr, $row["agent_login"]); 
} 
$js_login_arr = json_encode($login_arr); 
print $js_login_arr; // ["paulyoung","stevefosset","scottvanderlee"] 

JS:

var login_arr = "<?= $js_login_arr; ?>"; 
alert(login_arr); // acn't even get the string in?? 
var obj = jQuery.parseJSON(login_arr); 

Répondre

1

Retirez les citations du PHP intégré dans votre javascript. La notation est un tableau littéral, et n'a pas besoin de guillemets (en supposant que le commentaire PHP après js_login_arr est ce qui est imprimé dans le javascript).

+0

bien, merci! Qu'en est-il de parseJSON? Je suppose que ce n'est pas valide JSON non? – FFish

+0

login_arr n'est pas valide JSON - c'est déjà un objet Javascript valide (un tableau de chaînes) donc il n'est pas nécessaire d'être analysé par JSON! Si vous le vouliez vraiment (mais pourquoi?!), Ajoutez des guillemets au PHP embarqué dans votre JS: '', Mais vous devrez aussi mettre des antislashs avant à des citations dans $ js_login_arr lui-même ... qui devient juste stupide. – Chadwick

1

Un moyen facile de le faire est de délimiter. Prenez votre tableau (n'utilisez pas les tableaux assoc sauf si vous avez besoin des noms de champs), implosez-le dans une chaîne délimitée par un caractère qui ne devrait pas être utilisé, disons% ou quelque chose, puis JS explose sur ce personnage et voila, vous avez votre tableau. Vous n'avez pas besoin d'utiliser toujours des formalismes comme JSON ou XML lorsqu'une solution simple fera l'affaire.

+0

Cette suggestion est à la fois fragile et ajoute un traitement de chaîne inutile - "un certain caractère" pourrait bien être dans l'une des chaînes de votre liste, foirant l'explosion. Les «solutions simples» qui impliquent l'analyse de chaînes sont souvent celles où résident les bogues latents. D'ailleurs, pourquoi créer une chaîne et exploser en un tableau quand vous pouvez simplement créer le tableau? – Chadwick

+0

.split() e voila !!! C'est un bon conseil Merlin, acclamations. – FFish

+0

oh, vraiment pas bien que? Je dois dire ... mes noms de connexion sont tous validés, donc je peux utiliser en toute sécurité un certain délimiteur. Aussi le tableau est plutôt petit (moins de 100) – FFish

1

Si vous voulez faire un tableau php à JSON, vous devez le faire si $phpArray est réellement un tableau.

var jsJSON = echo json_encode($phpArray) 

Si vous voulez juste faire écho et se tourner vers JSON vous devez donner comme une chaîne:

$phpArray = '{'.$key1.':'.$val1','.$key2':'.$val2.'}'; 

Cela fonctionnera à coup sûr.