这是有关的代码:
var membre = '<?= $_SESSION['login'] ?>';
检查 Firebug 控制台时出现此错误: SyntaxError: missing ; Javascript 中的 before 语句
并且 Javascript 不会自行执行。奇怪的是,这曾经可以工作,而且它也可以在本地工作,没有问题。
你知道为什么吗?还是有另一种方法可以在 Javascript 变量中获取“登录”会话?
谢谢
这是有关的代码:
var membre = '<?= $_SESSION['login'] ?>';
检查 Firebug 控制台时出现此错误: SyntaxError: missing ; Javascript 中的 before 语句
并且 Javascript 不会自行执行。奇怪的是,这曾经可以工作,而且它也可以在本地工作,没有问题。
你知道为什么吗?还是有另一种方法可以在 Javascript 变量中获取“登录”会话?
谢谢
您不应该将 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 + '] ?>';
这取决于您是要访问名称为“login”的属性 (1),还是要访问带有名为“login”的 javascript 变量内容的属性 (2)。
无论如何,您的代码 ( var membre = '<?= $_SESSION['login'] ?>';
) 实际上是两个分隔的字符串,中间的名称为“login”。所以 javascript 想要将字符串分配给"<?= $_SESSION["
变量membre
,并期望在此之后有一个分号。但它找到的不是分号,而是“login”这个词,它认为这是一个不同的语句。这就是为什么您会收到错误“缺少 ; before statement”的原因。
编辑
正如 Felix Kling 指出的那样,我在这里走错了路,因为里面的 PHP 代码<?= ... ?>
首先被评估(见下面他的评论)。因此,内部单引号不是这里的问题。