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 パーサーを介して実行する文字列に変換しようとするのではなく、JSON を JavaScript オブジェクト リテラルとして扱います。

後者のオプションは適切です (PHP が有効な JSON を生成できることを証明することが目的でない限り)。

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

HTML に挿入するためにさらにエスケープすることを心配する必要はありません。これは、心配する必要がある唯一のシーケンス (script 要素内) であり、とにかく</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 に答える