我有一个加载会话变量的PHP页面:
$user_id = $_SESSION['USER_ID'];
以前,我在该页面中包含了我的Javascript / jQuery,并添加了<? echo $user_id; ?>
来设置Javascript变量:
$(document).ready(function() {
$(".button").click(function() {
var user_id = <? echo $user_id; ?>
var dataString = 'user_id=' + user_id;
$.ajax({
type: "POST",
url: "../add_user.php",
data: dataString,
});
return false
});
});
但是,我想将我的Javascript移动到一个单独的页面并从我的PHP页面调用脚本:
<script src="add_user.js" type="text/javascript"></script>
如果我这样做,我就不能再使用<? echo $user_id; ?>
了,那么将我的PHP变量传递给Javascript / jQuery函数的最佳方法是什么?
答案 0 :(得分:9)
您可以将您的网络服务器配置为将.js文件视为PHP脚本,这样您就可以从.js文件中执行PHP代码。
但是,如果这是不可接受的,您可以随时执行以下操作:
<script type="text/javascript">var user_id = <?php echo json_encode($user_id) ?>;</script>
<script type="text/javascript" src="add_user.js"></script>
在PHP脚本级别定义变量,然后像往常一样包含外部.js。
如果$ user_id总是数字,那么json_encode()位是过度的,但我已经养成了在我动态生成JS代码的任何地方使用它的习惯。使用json_encode可以保证您插入一个语法正确的JS片段。
答案 1 :(得分:3)
<script>
var user_id = <?php echo $user_id; ?>
</script>
<script src="add_user.js" type="text/javascript"></script>
现在,您可以在user_id
文件中使用add_user.js
。另外,我建议against using PHP short tags。
答案 2 :(得分:2)
您仍然可以在外部js文件中引用您的变量
<script type="text/javascript">
var yourvar = <? echo $user_id; ?>;
</script>
<script src="add_user.js" type="text/javascript"></script>
答案 3 :(得分:0)
在另一边开始会话。考虑到JS数据可能被破坏,甚至是故意的并且可能被利用(安全性),它也更加安全。
开始会话后 - 在那里读取值。
当然,这对同一个虚拟主机上的脚本有效。