【问题标题】:How do I convert PHP variables to JavaScript variables?如何将 PHP 变量转换为 JavaScript 变量?
【发布时间】:2010-12-12 03:29:44
【问题描述】:

我正在尝试将 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 javascript json serialization


【解决方案1】:

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

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

echo "var fruit = $json_fruit;";

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

【讨论】:

  • eval 不是必需的,除非您尝试通过 ajax 将其作为响应传回(在这种情况下,无论如何它都应该在 js 端进行)。 json_encode 吐出一个有效的 js 对象/值。
  • -1 对于不需要的eval。这表明您不了解 JSON 是什么。
  • 感谢您对此的提醒。我已经更新了答案,所以它不再使用 eval()。
【解决方案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 ","
 }
 ?>]

【讨论】:

  • 啊,我想我错过了关于将 PHP 变量序列化为 JavaScript 的问题。应该有一个内置的 PHP 函数可以做到这一点(但我也不是 PHP 人,所以不知道它可能是什么)。
  • 是的,我一开始在阅读问题时也犯了同样的错误^^确实必须有一个函数在某处执行此操作,但这也应该可以解决问题。
  • 只记得有一个 implode 函数将数组转换为分隔列表 - 处理尾随逗号问题 - 但这需要一个数组才能使用,这可能需要更多的工作来创建反正比你现有的计数器方法。
【解决方案3】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多