从PHP函数执行javascript函数

时间:2011-03-18 16:42:31

标签: php javascript jquery session

如果存在PHP会话,我正在尝试找到执行javascript函数的最佳和更简洁的方法。

JS-的script.js

  • 包含javascript函数 - > function doStuff(){// do stuff}

的index.php

  • 包含js文件 - >在头上
  • 包含检查$ _SESSION的>类> 包含在DOCTYPE之前

请让我知道thougts(我使用的是PHP,javascript,jQuery)。

  1. 如果$ _SESSION存在,执行js脚本的最佳方法是什么?
  2. 如果$ _SESSION被销毁,停止js脚本的最佳方法是什么?
  3. 谢谢,

    格雷格

4 个答案:

答案 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)

您有两种选择。

  1. 将该功能放在单独的文件中,并仅在设置会话时包含该功能。
  2. 将JS文件作为PHP文件提供。这将允许您在JS文件中运行PHP命令。只需确保您的内容类型正常。

答案 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脚本中查询并采取相应的行动。