【问题标题】:How to pass php array of arrays to Javascript如何将数组的php数组传递给Javascript
【发布时间】:2012-04-04 08:13:30
【问题描述】:

例如,我在这个布局中有一个 PHP 数组,

"Key1" => { "id" => 1, "name" => "MyName", "address" => "USA" }
"Key2" => { "id" => 2, "name" => "MyName2", "address" => "Australia" }

PHP 数组中的数据取自 SQL 数据库。现在我希望能够在 JavaScript 中使用它。

我在网上搜索,人们建议使用以下代码使用 JSON:

var js_var = JSON.parse("<?php echo json_encode($var); ?>");

我在使用 firebug 时在 firefox 中收到此错误

missing ) after argument list [Break On This Error]
var js_var = JSON.parse("{"Key1":{"id":"1","name":"MyName","address":"USA"...

错误就在 JSON.parse("{"Key1

在谷歌浏览器中,firebug 不报告任何错误

【问题讨论】:

标签: php javascript arrays json


【解决方案1】:

您的错误是因为您使用双引号 (") 来包装 JSON 字符串。由于 JSON 字符串还包含双引号,解析器无法确定字符串何时开始并正确结束。

将行改为:

var js_var = JSON.parse('<?php echo json_encode($var); ?>');

也就是说 JSON 或 JavaScript Object Notation 已经是 JavaScript 编程语言的一个子集,因此已经可以被 JavaScript 引擎解析,因此不一定需要被 JSON.parse 解析。

var js_var = <?php echo json_encode($var); ?>;

但是,如果您确定要输出的 JSON 作为 JSON.parse 的不正确解析,我只会推荐此选项,因为我认为直接注入的不正确 JSON 会导致解析器错误。

【讨论】:

  • $var 的内容是从数据库中取出到 PHP 数组中的。这会是关于要转换为 JSON 格式的数据的正确性的问题吗?
  • @John 在这种情况下,由于您自己对数据进行编码,我想任何会导致 JavaScript 解析错误的事情都会导致您的 PHP 出现编码错误,因此请确保您处理了PHP.
【解决方案2】:

为什么要在客户端将这个奇怪的json_encode 变成一个字符串到只有JSON.parse?真的没用编码。

试试var js_var = &lt;?php echo json_encode($var); ?&gt;;

【讨论】:

  • 好的,但是如果变量是动态生成的(例如,基于当前页面状态),那就不是很好了。
  • @Alex:你这是什么意思?我们正在谈论构建从服务器到客户端的初始响应。如果客户端需要动态更改js_var 变量,可以随意更改。
【解决方案3】:
var js_var = JSON.parse('<?php echo json_encode($var); ?>');

或者,甚至更好:

var js_var = <?php echo json_encode($var); ?>;

...因为根据定义,JSON 是用于对象声明的有效 JavaScript 语法。

【讨论】:

  • 完美运行。所以双引号把它搞砸了。没注意到。非常感谢..
猜你喜欢
  • 2014-06-11
  • 1970-01-01
  • 2014-03-05
  • 2011-05-16
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2016-07-11
相关资源
最近更新 更多