parseJson遇到意外错误(意外标识符)

时间:2013-02-11 14:30:55

标签: php jquery

这都是在同一个脚本中。我知道ajax和服务器端代码之间的区别。我在这个javascript脚本中交织了php,如下所示:

<script>
    <?php
        $json_string = json_encode(array("agent_table" => "<span style='float: left;'></span>"));
    ?>

    var response = $.parseJSON('<?php echo $json_string; ?>');
</script>

parseJson抱怨错误。从span删除样式时,错误消失。

错误是'意外的标识符'。这是在Chrome中。

3 个答案:

答案 0 :(得分:1)

您的数据中包含'个字符。这些将继续在JSON中表示为文字'字符。

您将JSON直接嵌入到JavaScript字符串中,该字符串由'个字符分隔。在JSON中出现作为数据的第一个'将终止JS字符串。

将数据格式嵌入另一个数据格式时,这是一个普遍的问题。您正在使用HTML在JavaScript中嵌入JSON。

您的选择:

  • 将JSON中的'的每个实例替换为\'(因此它们的意思是“Apostrophe”而不是“JS字符串的结尾”)
  • 将JSON视为JavaScript对象文字而不是尝试将其固定为通过JSON解析器运行它的字符串。

后一个选项是理智的(只要您的目标不涉及证明PHP可以生成有效的JSON)。

var response = <?php echo $json_string; ?>;

您无需担心进一步转义以插入HTML,因为您需要担心的唯一序列(在脚本元素内)是</script>而PHP的json_encode将输出{{无论如何,1}}。

答案 1 :(得分:0)

可能是吗?

<script>
<?php
$json_string = json_encode(array(
                               "agent_table"=> '<span style="float: left;"></span>'
                           ));
?>
var response = <?php echo $json_string;?>;
</script>

答案 2 :(得分:0)

试试吧!!!

<script>
<?php
$json_string = json_encode(array('agent_table' => addslashes('<span style="float: left;"></span>')));
?>

var response = $.parseJSON('<?php echo $json_string; ?>');