語句之前,這是有關的守則:SyntaxError:missing;在Javascript
var membre = '<?= $_SESSION['login'] ?>';
我得到這個錯誤,當我檢查Firebug控制檯: 語法錯誤:缺少;在Javascript中聲明之前
而Javascript不會執行它自己。 奇怪的是,這用於工作,它也適用於本地,沒有問題。
你知道爲什麼嗎?或者有另一種方法來獲得JavaScript變量中的「登錄」SESSION?
謝謝
語句之前,這是有關的守則:SyntaxError:missing;在Javascript
var membre = '<?= $_SESSION['login'] ?>';
我得到這個錯誤,當我檢查Firebug控制檯: 語法錯誤:缺少;在Javascript中聲明之前
而Javascript不會執行它自己。 奇怪的是,這用於工作,它也適用於本地,沒有問題。
你知道爲什麼嗎?或者有另一種方法來獲得JavaScript變量中的「登錄」SESSION?
謝謝
您不應該將PHP變量轉儲到JavaScript字符串中。有一個機制已經到位:
var membre = <?php echo json_encode($_SESSION['login']) ?>;
這將自動添加引號並轉義字符串中的任何有問題的字符。它也可以用於數字和布爾(通過原始數據),甚至數組(轉換爲文字)。
非常感謝, –
你的代碼行應該是這個(1):
// double quotes on the outside and single quotes on the inside or vice versa
var membre = "<?= $_SESSION['login'] ?>";
或本(2):
var membre = '<?= $_SESSION[' + login + '] ?>';
此,如果你想用的名稱訪問屬性取決於「登錄「(1)或者如果你想訪問一個名爲」login「(2)的JavaScript變量的內容。
無論如何,您的代碼(var membre = '<?= $_SESSION['login'] ?>';
)實際上是兩個分隔的字符串,中間名爲「login」。因此,JavaScript想要將字符串"<?= $_SESSION["
分配給變量membre
,並且在此之後需要分號。但不是分號,而是找到了「登錄」這個詞,它認爲這是一個不同的陳述。這就是爲什麼你會得到錯誤「失蹤;之前的聲明」。
編輯
飾演Felix克林指出的那樣,我是一個在錯誤的道路在這裏,因爲裏面<?= ... ?>
PHP代碼首先計算(見下面他的評論)。所以,內部單引號不是這裏的問題。
單引號不是問題,至少在這個階段。 PHP並不在乎'<?= $ _SESSION ['login']?>''是什麼。它可能看起來很奇怪,但由於整個代碼分兩個階段進行評估,所以這不是問題。 '= ... ?>'部分首先由PHP進行評估,輸出可能類似'var membre ='foo';',這在JavaScript中不會造成問題。如果PHP生成的輸出包含(單個)引號,則這只是一個問題。 –
我明白了。我想你是對的,我怎麼會錯過這個!?我完全忽略了這是PHP。我在純JavaScript中回答了這個問題。 – basilikum
在這個問題中突出顯示的語法當然無助於使這個更清晰;)可以理解的是,被這個混淆是可以理解的。 –
'$ _SESSION ['login']'的內容是什麼?你確定PHP正在被評估嗎?你有沒有嘗試查看源代碼?你的服務器配置是否允許使用短標籤,或者你使用PHP 5.4嗎? –
您的登錄會話var是否包含單引號? –
@Druska:不正確。 PHP將在JavaScript之前進行評估。 –