-1

这是有关的代码:

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

检查 Firebug 控制台时出现此错误: SyntaxError: missing ; Javascript 中的 before 语句

并且 Javascript 不会自行执行。奇怪的是,这曾经可以工作,而且它也可以在本地工作,没有问题。

你知道为什么吗?还是有另一种方法可以在 Javascript 变量中获取“登录”会话?

谢谢

4

2 回答 2

3

您不应该将 PHP 变量转储到这样的 JavaScript 字符串中。已经有一个机制:

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”。所以 javascript 想要将字符串分配给"<?= $_SESSION["变量membre,并期望在此之后有一个分号。但它找到的不是分号,而是“login”这个词,它认为这是一个不同的语句。这就是为什么您会收到错误“缺少 ; before statement”的原因。

编辑

正如 Felix Kling 指出的那样,我在这里走错了路,因为里面的 PHP 代码<?= ... ?>首先被评估(见下面他的评论)。因此,内部单引号不是这里的问题。

于 2013-05-29T14:44:57.047 回答