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

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

问题描述:

我想将php变量插入到javascript中。如何将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'],"; 
} 
?>] 
+1

这是个问题吗?任何错误? – 2009-11-02 00:09:17

+0

我试图快速澄清这个问题。希望Gully会证实这是他想要做的。 – 2009-11-02 00:39:21

+0

重复http://stackoverflow.com/questions/1663750/var-transfert-between-php-and-javascript/ – 2009-11-02 23:36:55

使用PHP的json_encode &然后回显出来JavaScript的直接,如:

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

echo "var fruit = $json_fruit;"; 

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

+3

eval不是必须的,除非你试图通过ajax把它作为响应传回去(在这种情况下,它应该继续在js端)。 json_encode吐出一个有效的js对象/值。 – 2009-11-03 00:00:36

+1

-1对于不需要的'eval'。这表明你不明白JSON是什么。 – 2011-05-13 14:32:11

+0

感谢您对此提醒。我更新了答案,因此不再使用eval()。 – Klinky 2011-05-14 13:49:54

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

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

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

如果你想以响应客户端浏览器的行为不执行PHP操作重新加载整个页面,调查'阿贾克斯'。

你这样做:

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

啊,我想我错过了这个问题是关于序列化PHP变量为JavaScript。应该有一个内置的PHP函数来做到这一点(但我不是一个PHP的人,所以不知道它可能是什么)。 – 2009-11-02 00:35:33

+0

是的,我在阅读问题时首先提出了相同的错误^^真的,必须有一个函数在某处做这件事,但这也应该做到这一点。 – marcgg 2009-11-02 00:40:00

+0

只记得有一个'implode'函数可以将数组转换为分隔列表 - 应对尾随逗号问题 - 但这需要一个数组来处理,无论如何,这可能比您现有的计数器方法创建更多的工作。 – 2009-11-02 00:45:30