0

这都在同一个脚本中。我知道 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 中。

4

3 回答 3

1

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

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

这是在另一种数据格式中嵌入数据时的普遍问题。您在 HTML 中的 JavaScript 中嵌入 JSON。

您的选择:

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

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

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

您无需担心插入 HTML 时会进一步转义,因为您需要担心的唯一序列(在脚本元素内)是</script>PHP无论如何json_encode都会为此输出<\/script>

于 2013-02-11T14:51:53.670 回答
0

可能是吗?

<script>
<?php
$json_string = json_encode(array(
                               "agent_table"=> '<span style="float: left;"></span>'
                           ));
?>
var response = <?php echo $json_string;?>;
</script>
于 2013-02-11T14:37:40.167 回答
0

尝试一下!!!

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

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

于 2013-02-11T14:47:22.890 回答