PHP json_encode返回未转义的'


PHP json_encode return unescaped '

我遇到了在js中解析json编码对象的问题。JSON.parse(word_array);出错Uncaught SyntaxError: Unexpected identifier

我的调查表明,对象word_array不存在,因为在PHP中错误的形成:它有一个未转义的单引号',从而使js认为它是字符串的结束。

我按下一种方式形成编码:

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

据我所知,json_encode应该转义所有不需要的字符,如',但它没有。有什么问题吗?

我的php版本:Version PHP: 5.3.13$word_set是关联数组。数组:

$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>