如何将PHP变量转换为JavaScript变量?

时间:2009-11-02 00:07:19

标签: php javascript json serialization

我正在尝试将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 个答案:

答案 0 :(得分:4)

使用PHP的json_encode&amp;然后直接回到javascript,例如:

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

echo "var fruit = $json_fruit;";

编辑:我已将此答案更新为不再使用eval(),因为它不是必需的。当我第一次回答这个问题时,我刚刚开始使用JSON。

答案 1 :(得分:2)

你这样做:

 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 ","
 }
 ?>]

答案 2 :(得分:1)

PHP在服务器上运行。 JavaScript在客户端上运行。

您可以从PHP生成JavaScript,但不能在JavaScript中运行PHP。

(值得一读的是网络的各个组成部分如何工作,特别是HTTP,以便更好地理解这一切。)

如果您想在浏览器中执行PHP操作以响应客户端操作而不重新加载整个页面,请调查'ajax'。