我觉得我在这里绕圈子,错过了一些真正愚蠢的东西......
我的设置实际上是在服务器端使用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 ?>);
有什么想法吗?在这一点上我感到非常愚蠢:(
答案 0 :(得分:4)
如果在输出中看到<?php echo $the_user->id; ?>
,则表示PHP不会解析您的文档。
检查文件扩展名,确认它确实是在您的网络服务器配置中发送给PHP。
例如,如果在.js文件中添加PHP标记,它将不会传递给PHP,如果您使用的是Apache,则必须添加:
AddType application/x-httpd-php .js
或在HTML中设置变量并将其作为参数发送到外部Javascript。
答案 1 :(得分:0)
mathieu-imbert关于你的文件没有作为视图处理是正确的。这是你的第一个障碍:确保正在解析页面。
另外,当试图将PHP变量粘贴到javascript中时,你必须考虑转义变量,处理意外值等等。幸运的是,有一个简单的答案:
$(document).ready(function() {
var UID = <?php echo json_encode($the_user->id); ?>;
console.log(UID);
});
您可以通过这种方式将任意复杂的数据插入到Javascript中,只要您注意序列化PHP数据的常见限制。