1

我觉得我在这里转了一圈,错过了一些非常愚蠢的东西......

我的设置本质上是在服务器端使用 CodeIgniter,在客户端使用 Bootstrap,但这有点离题......

我正在尝试在 javascript 函数中调用 php 值。该值存储在其中一个 php 控制器中的受保护变量中,该控制器中加载的视图可以访问该变量,因为我直接在 html 中访问该变量(因此我假设我可以在JavaScript 也是如此)。

代码在这里,它真的很简单:

$(document).ready(function() {
    var UID = "<?php echo $the_user->id; ?>";
    console.log(UID);
});

我希望这会做一个控制台输出,比如“1”,但它实际上输出的是"<?php echo $the_user->id; ?>". 如果我只是回显一个简单的字符串,而不是一个 php 变量,也会发生这种情况。

我觉得这可能是一个配置问题,但我真的不知道。如果我从 php 调用中删除引号,我会得到一个

TypeError: can't wrap XML objects   
console.log(<?php echo $the_user->id ?>);

有任何想法吗?在这一点上我真的很愚蠢:(

4

2 回答 2

4

如果您<?php echo $the_user->id; ?>在输出中看到,则表示您的文档没有被 PHP 解析。

检查文件扩展名,检查它是否确实在您的网络服务器配置中发送到 PHP。

例如,如果您在 .js 文件中添加 PHP 标记,它将不会传递给 PHP,如果您使用的是 Apache,则必须添加:

AddType application/x-httpd-php .js

或在 HTML 中设置变量并将其作为参数发送到外部 Javascript。

于 2012-10-02T21:43:34.537 回答
0

mathieu-imbert 关于您的文件未作为视图处理是正确的。这是您的第一个障碍:确保页面正在被解析。

此外,当尝试将 PHP 变量粘贴到 javascript 中时,您必须考虑转义变量、处理意外值等。幸运的是,有一个简单的答案:

$(document).ready(function() {
    var UID = <?php echo json_encode($the_user->id); ?>;
    console.log(UID);
});

您可以通过这种方式将任意复杂的数据插入 Javascript,前提是您注意序列化 PHP 数据的常见限制。

于 2012-10-02T23:04:34.267 回答