javascript - PHP json_encode 返回未转义的 '

标签 javascript php json

我在 js 中解析 json 编码对象时遇到问题。 JSON.parse(word_array); 出现错误 Uncaught SyntaxError: 意外的标识符

我的调查显示对象word_array不存在,因为PHP中的格式错误:它内部有一个未转义的单引号',从而使js将其视为字符串末尾。

我以下面的方式形成编码:

echo "<script>var word_array = '";
echo  json_encode($word_set);
echo "';\n";

据我所知,json_encode应该转义所有不需要的字符,例如',但事实并非如此。 可能是什么问题?

我的 PHP 版本:PHP 版本:5.3.13 $word_set 是 assoc 数组。数组:

$word_set = array();
while($stmt->fetch())
{
  $word_set_tmp[] = array(
    'word' => $word, 
    'definition' => $def
  );
  array_push ($word_set,$word_set_tmp);
} 

最佳答案

问题是您将数组声明放在单引号中,删除它们,一切都很好:

echo "<script>var word_array = " . json_encode($word_set) . ";";

作为旁注,我发现当我必须将 php 与其他任何内容(html、js)混合时,最好退出 php 模式并编写 html/js,回显所需的 php 变量,而不是回显 html/js :

<?php 
    $word_set = $db->somfunc();
?>
<script>
    var word_array="<?php echo json_encode($word_set);?>";
    alert(word_array[1].definition);
</script>

关于javascript - PHP json_encode 返回未转义的 ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017758/

相关文章:

javascript - 如何将 javascript 设置样式属性返回到 CSS 默认值

javascript - 使用 vanilla JavaScript 将 li 附加到 ul

javascript - Google 电子表格脚本中的用户输入

javascript - Elementor - 滚动 "motion-effects"在调整窗口大小之前不起作用

javascript - 选择第一个选择框值后填充第二个选择框,如何在脚本中选择要编辑的值

java - 获取 Spring MVC 中 JSON 表单绑定(bind)错误的详细信息

java - Java中如何删除JSON多余的行?

php - 如何在 Joomla 中包含外部 PHP 类

php - 如何使用 eval 从函数返回?

Ruby - Microsoft Translator 意外 token 错误