如何将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'],";
}
?>]
使用PHP的json_encode &然后回显出来JavaScript的直接,如:
$fruit = array("banana", "apple", "strawberry", "raspberry", "orange");
$json_fruit = json_encode($fruit);
echo "var fruit = $json_fruit;";
编辑:我已经更新THI因为它不是必需的,所以不再使用eval()。当我第一次回答这个问题时,我刚刚开始使用JSON。
eval不是必须的,除非你试图通过ajax把它作为响应传回去(在这种情况下,它应该继续在js端)。 json_encode吐出一个有效的js对象/值。 – 2009-11-03 00:00:36
-1对于不需要的'eval'。这表明你不明白JSON是什么。 – 2011-05-13 14:32:11
感谢您对此提醒。我更新了答案,因此不再使用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 ","
}
?>]
啊,我想我错过了这个问题是关于序列化PHP变量为JavaScript。应该有一个内置的PHP函数来做到这一点(但我不是一个PHP的人,所以不知道它可能是什么)。 – 2009-11-02 00:35:33
是的,我在阅读问题时首先提出了相同的错误^^真的,必须有一个函数在某处做这件事,但这也应该做到这一点。 – marcgg 2009-11-02 00:40:00
只记得有一个'implode'函数可以将数组转换为分隔列表 - 应对尾随逗号问题 - 但这需要一个数组来处理,无论如何,这可能比您现有的计数器方法创建更多的工作。 – 2009-11-02 00:45:30
这是个问题吗?任何错误? – 2009-11-02 00:09:17
我试图快速澄清这个问题。希望Gully会证实这是他想要做的。 – 2009-11-02 00:39:21
重复http://stackoverflow.com/questions/1663750/var-transfert-between-php-and-javascript/ – 2009-11-02 23:36:55