【问题标题】:PHP or JavaScript issue when parsing JSON encoded PHP array into JavaScripts JSON.parse()将 JSON 编码的 PHP 数组解析为 JavaScript JSON.parse() 时的 PHP 或 JavaScript 问题
【发布时间】:2014-07-31 15:14:12
【问题描述】:

我目前正在为我的工作场所制作一个 Web 应用程序,它一次性从 SQL 表中下载大约 40,000 行数据,将数据放入嵌套的 PHP 数组中,然后尝试回显 JSON 编码的数组,其中JavaScript 变量应该捕获内容。

如果我尝试将数据直接回显到标签中,它可以正常工作 - 一切都完美显示 - 格式化为 JSON 编码字符串。但是,如果我尝试将数据回显到<script> 标签中,在语音标记“”或“”之间,它会在 chrome 中引发错误,说“未捕获的语法错误:意外的标识符” - 当我尝试滚动到末尾时(很长的)字符串,它似乎被砍掉了,只有几千个字符。

字符串实际上有 1,476,075 个字符长。

我该如何解决这个问题?我正在重新制作应用程序 - 它最初基本上将 javascript 与 SQL 结果结合起来,同时遍历结果行,但这太慢且笨重,所以我想出了一种更简单快捷的方法来将数据从 PHP 移动到 JavaScript,将是带有大的 JSON 编码字符串。

任何建议将不胜感激。

  • 丹。

【问题讨论】:

  • 如果是 JSON 编码的,则不需要引号。只需将其直接放入 <script> 标记中的 JavaScript 代码即可。
  • 我将它传递给 JSON.parse() - 我很确定它需要用引号封装。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 没有必要将它传递给JSON.parse(),这就是重点——JSON 语法是有效的 JavaScript 语法。这就是 JSON 中的 J 所代表的含义。
  • 如何捕获它所在的数组?

标签: javascript php mysql arrays json


【解决方案1】:

json_encode() 负责所有需要完成的引用/转义:

<?php
    $foo = 'this is a simple string';
?>

<script>
    var foo = "<?php echo json_encode($foo); ?>"; // incorrect
    var bar = <?php echo json_encode($foo); ?>; // correct

上述构造将创建:

var foo = ""this is a simple string"";
          ^--- your quote
           ^---the quote json_encode added

var bar = "this is a simple string"; // all-ok here.

【讨论】:

  • 我明白了,谢谢。我现在只使用 JavaScript 几个月了,但我应该知道这一点。谢谢大家,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多