Chrome で「SyntaxError: Unexpected token ILLEGAL」エラーが発生しています。
<?
$data = "this is description
new line";
?>
$(".gantt").gantt({
desc: "<? echo $data; ?>"
});
エラーは「これは説明です」と「改行」の間にあります。なぜそこに入ることができないのですか?これを回避する方法はありますか?
Chrome で「SyntaxError: Unexpected token ILLEGAL」エラーが発生しています。
<?
$data = "this is description
new line";
?>
$(".gantt").gantt({
desc: "<? echo $data; ?>"
});
エラーは「これは説明です」と「改行」の間にあります。なぜそこに入ることができないのですか?これを回避する方法はありますか?
JavaScript 文字列に (エスケープされていない) 改行を含めることはできません。
あなたは出力しています:
$(".gantt").gantt({
desc: "this is description
new line"
});
後の改行description
は無効です。
あなたの値が必要json_encode
です(はい、json_encode
プレーンな文字列でも機能します)。
$(".gantt").gantt({
desc: <? echo json_encode($data); ?>
});
引用符を削除したことに注意してください。 json_encode
あなたのために引用符を追加します。
コードはクライアント側で次のようにレンダリングされます。
$(".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";
?>
これらのスタイルの違いを理解するには、クライアント側でレンダリングされたソースを見てください。
...
desc: "<?= str_replace('\n', '\\n', $data); ?>",
...
Javascript は改行でチョークしますが、「エスケープ」して問題を回避できます。
または、Marc B が述べたように、次を使用できますjson_encode
。
...
desc: <?= json_encode($data); ?>,
...
空の値がjson_encode
出力されている場合は、コンテンツが必要な可能性がありutf8_encode
ます。