-1

これは関係するコードです:

    var membre = '<?= $_SESSION['login'] ?>';

Firebug コンソールを確認すると、次のエラーが表示されます: SyntaxError: missing ; Javascript の before ステートメント

また、Javascript 自体は実行されません。奇妙なことに、これは以前は機能していましたが、ローカルでも問題なく機能します。

なぜなのかご存知ですか?または、Javascript 変数で「ログイン」セッションを取得する別の方法はありますか?

ありがとう

4

2 に答える 2

3

そのような JavaScript 文字列に PHP 変数をダンプしないでください。メカニズムはすでに整っています。

var membre = <?php echo json_encode($_SESSION['login']) ?>;

これにより、引用符が自動的に追加され、文字列内の問題のある文字がエスケープされます。また、数値とブール値 (生で渡される)、さらには配列 (リテラルに変換される) にも使用できます。

于 2013-05-29T14:32:17.593 に答える
0

コード行は次のいずれかになります (1):

// double quotes on the outside and single quotes on the inside or vice versa
var membre = "<?= $_SESSION['login'] ?>";

またはこれ(2):

var membre = '<?= $_SESSION[' + login + '] ?>';

これは、「login」という名前のプロパティにアクセスするか (1)、「login」という名前の javascript 変数の内容を持つプロパティにアクセスするか (2) によって異なります。

とにかく、あなたのコード ( var membre = '<?= $_SESSION['login'] ?>';) は、実際には「login」という名前が真ん中にある 2 つの文字列で区切られています。そのため、javascript は文字列"<?= $_SESSION["を変数に割り当て、membreその後にセミコロンが必要です。しかし、セミコロンの代わりに "login" という単語が検出され、別のステートメントであると見なされます。そのため、「missing ; before statement」というエラーが表示されます。

編集

Felix Kling が指摘したように、内部の PHP コード<?= ... ?>が最初に評価されるため、私はここで間違った道をたどりました (以下の彼のコメントを参照)。したがって、内側の一重引用符はここでは問題になりません。

于 2013-05-29T14:44:57.047 に答える