2

Chrome で「SyntaxError: Unexpected token ILLEGAL」エラーが発生しています。

<?
$data = "this is description
         new line";
?>

$(".gantt").gantt({
  desc: "<? echo $data; ?>"
});

エラーは「これは説明です」と「改行」の間にあります。なぜそこに入ることができないのですか?これを回避する方法はありますか?

4

3 に答える 3

5

JavaScript 文字列に (エスケープされていない) 改行を含めることはできません。

あなたは出力しています:

$(".gantt").gantt({
  desc: "this is description
         new line"
});

後の改行descriptionは無効です。

あなたの値が必要json_encodeです(はい、json_encodeプレーンな文字列でも機能します)。

$(".gantt").gantt({
  desc: <? echo json_encode($data); ?>
});

引用符を削除したことに注意してください。 json_encodeあなたのために引用符を追加します。

于 2012-11-19T20:38:12.870 に答える
1

コードはクライアント側で次のようにレンダリングされます。

$(".gantt").gantt({
  desc: "this is description
         new line"
});

JavaScript は複数行の文字列をサポートしていないため、これは許可されていません (とにかく、これは好きではありません)。何をしようとしているのかはわかりませんが、JavaScript で複数行にまたがる文字列が必要な場合は、次のようにすることができます。

<?
$data = "this is description\
         new line";
?>

またはこれ:

<?
$data = "this is description\" +
        \"new line";
?>

またはこれでも:

<?
$data = "this is description\\
         new line";
?>

これらのスタイルの違いを理解するには、クライアント側でレンダリングされたソースを見てください。

于 2012-11-19T20:37:55.597 に答える
0
...
desc: "<?= str_replace('\n', '\\n', $data); ?>",
...

Javascript は改行でチョークしますが、「エスケープ」して問題を回避できます。

または、Marc B が述べたように、次を使用できますjson_encode

...
desc: <?= json_encode($data); ?>,
...

空の値がjson_encode出力されている場合は、コンテンツが必要な可能性がありutf8_encodeます。

于 2012-11-19T20:37:49.630 に答える