我在整个会话期间都有一个PHP会话变量$_SESSION['user']
。在head部分中,我包含了我的JavaScript文件scripts.js
。
如果我需要以下内容,如何将会话变量传递到JavaScript文件中。
$.("#btn').click (
function() {
alert('<?php echo $_SESSION['user']; ?>');
}
)
由于JavaScript文件中无法识别<?php ?>
,因此上述代码无效。所以我要自己输入PHP文件,但是如何将它保存在JavaScript文件中呢?
答案 0 :(得分:14)
在PHP文件中,您可以将用户设置为全局变量:
<script type="text/javascript">
var ptamzzNamespace = {
sessionUser : '<?php echo $_SESSION['user']; ?>'
}
</script>
在包含外部JavaScript代码之前包含此内容。
然后在您的JavaScript文件中,您可以使用它:
$.("#btn').click (
function() {
alert(ptamzzNamespace.sessionUser);
}
)
<强>此外:强>
如果您不确定会话varibale是否可以包含引号,则可以使用addslashes()
来解决此问题:
<?php echo addslashes($_SESSION['user']); ?>
即使这可能产生一些你不想显示的东西(因为它产生一个带有斜杠的字符串),它将有助于你的代码不会失败。 (感谢Artefacto)
这会是你的选择吗?
答案 1 :(得分:2)
在文件中隐藏的输入类型中设置userID(在PHP中)。在您的JavaScript代码中,您可以读取隐藏的输入类型值。
答案 2 :(得分:1)
您可以将服务器设置为解析.js文件为PHP。例如,在Apache config或.htaccess文件中:
<FilesMatch "scripts.js">
AddHandler application/x-httpd-php5 .js
</FilesMatch>
答案 3 :(得分:0)
将包含的JavaScript文件解析为PHP
在JavaScript目录中创建.htaccess文件,并添加以下行。
AddHandler php-cgi .js
<?php ?>
标记到现在都被您的JavaScript文件识别。
使用Ajax获取用户ID
创建一个名为getID.php的文件,该文件仅回显用户ID。然后在JavaScript文件中,您可以使用以下代码。
$.get('getID.php', function(uid) {
alert('User ID is:' + uid);
});
在包含JavaScript打印用户ID之前创建脚本标记。
<script type="text/javascript">
userID = <?php echo $_SESSION['user']; ?>;
</script>
您现在可以使用变量userID访问用户ID。
答案 4 :(得分:0)
尝试以下逻辑
print ' <script type="text/javascript" language="javascript">
function checkForm()
{
var username = "'.$_SESSION['user'].'";
if( username == '')
{
alert('No Times selected');
return false;
}
}
</script>';