如果存在PHP会话,我正在尝试找到执行javascript函数的最佳和更简洁的方法。
JS-的script.js
的index.php
请让我知道thougts(我使用的是PHP,javascript,jQuery)。
谢谢,
格雷格
答案 0 :(得分:5)
<head>
<? if (session_is_registered('foo')) echo '<script>doStuff();</script>'; ?>
...
</head>
无法跨越服务器/客户端边界,因此最好的情况是在对客户端进行排队以触发javascript函数的页面上转储某些内容。
或者,您可以在AJAX调用中引用 session_verify.php 之类的内容,然后根据收到的响应“继续执行”/“停止”。
Pseduo代码:
if (ajax_response_from_session_verify() == still_logged_in){
execute doSomething();
else
stop doSomething();
请记住,调用会话检查文件可能会延长会话,具体取决于您使用它的方式。 (我不确定是否需要)
答案 1 :(得分:1)
您有两种选择。
答案 2 :(得分:0)
if(session is OK) {
$script = "doStuff();";
}
然后,在HTML头中:
<head>
...
<script type="text/javascript">
document.ready(function() {
<?php echo $script; ?>
});
</script>
...
</head>
答案 3 :(得分:0)
Brad是正确的,您需要使用PHP输出到页面,因为您无法直接从服务器调用JS。
写出脚本标签的另一种方法是通过PHP在HTML中放置一个标志,然后使用JavaScript来读取该标志。例如,您正在使用jQuery,您可以这样做:
<div id="sessionExists><?php if (isset($_SESSION['foo'])) echo 'true';?></div>
在你的jQuery中:
var session = ($('#sessionExists').text() === 'true'))? true : false;
现在你有一个JS变量,它包含一个“sessionExists”的布尔值,你可以在JS脚本中查询并采取相应的行动。