我在chrome上出現「SyntaxError:Unexpected token ILLEGAL」錯誤。SyntaxError:意外的令牌非法
<?
$data = "this is description
new line";
?>
$(".gantt").gantt({
desc: "<? echo $data; ?>"
});
錯誤在「這是描述」和「新行」之間。爲什麼我不能使用輸入?有沒有辦法讓這個變好?
我在chrome上出現「SyntaxError:Unexpected token ILLEGAL」錯誤。SyntaxError:意外的令牌非法
<?
$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
將爲您添加引號。
...
desc: "<?= str_replace('\n', '\\n', $data); ?>",
...
Javascript會窒息新行,但你可以「逃避它」來避免這個問題。
或者,正如馬克·B中提及的,可以使用json_encode
:
...
desc: <?= json_encode($data); ?>,
...
如果你找到了json_encode
輸出空值,那麼你需要utf8_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";
?>
要理解這些風格之間的差異,看在客戶端上呈現的來源。
錯誤。 '<? echo json_encode($ data)?>'FAR更安全。修正換行符是毫無意義的,如果錯誤是由於一個額外的''' –
@MarcB:取決於內容,但我認爲'json_encode'在很多方面更實用。 –