Как преобразовать переменные PHP в переменные JavaScript? - PullRequest
0 голосов
/ 02 ноября 2009

Я пытаюсь вставить переменные php в javascript.

Вот сломанный код:

 var tokens = [<?
 $result = mysql_query("SELECT * FROM accounts ORDER BY id DESC") or die (mysql_error()); 
 while ($row = mysql_fetch_array($result)) { 
 $user_name = $row['user'];
 $user_id = $row['id'];
 echo "['$user_name','$user_id'],";
 }
 ?>]

Ответы [ 3 ]

4 голосов
/ 02 ноября 2009

Используйте PHP json_encode, а затем выводите его непосредственно в javascript, например:

$fruit = array("banana", "apple", "strawberry", "raspberry", "orange");
$json_fruit = json_encode($fruit);

echo "var fruit = $json_fruit;";

Редактировать: я обновил этот ответ, чтобы больше не использовать eval (), поскольку он не требуется. Я только начал использовать JSON, когда впервые ответил на этот вопрос.

2 голосов
/ 02 ноября 2009

Вы делаете это:

 echo "['$user_name','$user_id'],";

... означает, что он сгенерирует это:

[ ['a','b'], ['a','b'], ['a','b'], ['a','b'], ]

Обратите внимание, что он всегда будет заканчиваться на "," и это неправильный синтаксис.

Правильный синтаксис:

[ ['a','b'], ['a','b'], ['a','b'], ['a','b'] ]

Я не парень по PHP, но я бы сказал, что-то вроде этого исправит это:

 var tokens = [<?
 $result = mysql_query("SELECT * FROM accounts ORDER BY id DESC") or die (mysql_error()); 
 $i = 0;
 while ($row = mysql_fetch_array($result)) { 
 $i++;
 $user_name = $row['user'];
 $user_id = $row['id'];
 echo "['$user_name','$user_id']";
 if($i < sizeof($result)-1 ) // incorrect syntax, but you get the point
   echo ","
 }
 ?>]
1 голос
/ 02 ноября 2009

PHP работает на сервере. JavaScript работает на клиенте.

Вы можете генерировать JavaScript из PHP, но не можете запустить PHP в JavaScript.

(Стоит прочитать о том, как работают различные компоненты сети, в частности HTTP , чтобы лучше понять все это.)

Если вы хотите выполнить действия PHP в ответ на действия клиента в браузере, не перезагружая всю страницу, исследуйте «ajax».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...