在Javascript中调用PHP会产生文字字符串函数

时间:2012-10-02 21:41:40

标签: php javascript

我觉得我在这里绕圈子,错过了一些真正愚蠢的东西......

我的设置实际上是在服务器端使用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 ?>);

有什么想法吗?在这一点上我感到非常愚蠢:(

2 个答案:

答案 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数据的常见限制。