Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 值更改后的函数调用_Javascript_Php_Html_Function_Hidden Field - Fatal编程技术网

Javascript 值更改后的函数调用

Javascript 值更改后的函数调用,javascript,php,html,function,hidden-field,Javascript,Php,Html,Function,Hidden Field,我正在尝试获取一个注销按钮,该按钮首先取消会话,然后关闭实际选项卡。 到目前为止,我只得到了会话销毁的部分,我不知道如何完成选项卡关闭。 我尝试在会话被破坏后使用setInterval回显该函数,但没有成功完成。有人知道一些提普吗?谢谢 编辑:所有代码都在同一页上 这是我的密码: [HTML] <input type="hidden" name="vLogout" value="false"> <input type="button" value="Logout" name="

我正在尝试获取一个注销按钮,该按钮首先取消会话,然后关闭实际选项卡。
到目前为止,我只得到了会话销毁的部分,我不知道如何完成选项卡关闭。
我尝试在会话被破坏后使用setInterval回显该函数,但没有成功完成。有人知道一些提普吗?谢谢
编辑:所有代码都在同一页上

这是我的密码:

[HTML]

<input type="hidden" name="vLogout" value="false">
<input type="button" value="Logout" name="Logging out" onClick="logout(this.form)" style="background-color:#cc0000;color:#ffffff">  
使用session_start();在页面顶部,而不是在任何函数中

而不是onClick=“logout(this.form)”到onClick=“logout(document.form)”

使用输入类型=提交。不是“按钮”,而是在$\u请求的位置[“vLogout”]使用
if(isset($_POST[“vLogout”])或if(isset($_GET[“vLogout”]))

您实际提交的表单会导致请求一个新文档,即当php脚本完成并输出时
closeTab()已传输到客户端,不再有功能
closeTab


也不能保证javascript代码可以关闭该特定窗口,因此我建议让php脚本打印出一个完整的html文档,该文档尝试关闭窗口/选项卡,但也会为用户显示一些信息,以防脚本失败。

您可以尝试在注销(f)函数中添加这一行

f.dataType = 'script';
注销功能应为:

function logout(f)
{
    var confirmed = confirm("Are you sure you want to logout?");
    if (confirmed){
      f.method="post";
      f.dataType = 'script'; //this line should be added
      f.vLogout.value = true;
      f.submit();
    }
}
在php代码中,编写不带脚本标记的脚本:

echo "closeTab();";

它应该可以工作。

注意:很可能,由于安全问题,您无法使用JS关闭选项卡。您只能用JS关闭一个选项卡,而不是用JS打开的选项卡

您可以使用JQuery。不要提交表格。使用onclick事件向服务器发送Ajax请求。当Ajax请求的数据类型为“脚本”时,浏览器将以JS的形式执行响应体

注意:将文件(index.php和logout.php)保存在同一目录中

在index.html中:

<html>
<head>
    <title>Ajax Logout</title>
      <style>
      .logout-button {
        background:#00aaee;
        display:inline-block;
        padding: 5px 10px;
        cursor: pointer;
      }
    </style>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>

<body>

    <div class="logout-button">logout</div>

    <script type="text/javascript">

      function closeTab(){
        confirm("test");
        //your code here
      }

      $('.logout-button').on('click', function(){
        $.ajax({
            url: ('logout.php'),
            type: 'POST',
            dataType: 'script'
          });
      });

    </script>

  </body>
</html>


Ajax注销
.注销按钮{
背景:#00aaee;
显示:内联块;
填充物:5px10px;
光标:指针;
}
注销
函数closeTab(){
确认(“测试”);
//你的代码在这里
}
$('.logout按钮')。在('click',function()上{
$.ajax({
url:('logout.php'),
键入:“POST”,
数据类型:“脚本”
});
});
在logout.php中:

<?php
session_start();
session_unset();
session_destroy();

echo "closeTab();";
?>


当任何输出发送到浏览器(如格式良好的HTML)后,您不能调用
会话_start()
——您永远不应该像那样输出Javascript代码,因为它不可能在代码中应该出现的位置。如果所有内容都在同一个页面中,请设置一个变量标志,例如,
$closeWindow=true
,然后在生成正确的页面标记结构后检查该标志,然后可以调用函数。请尝试将
onClick=“logout(this.form)”
更改为
onClick=“logout(document.form)”
@scrowler非常感谢,这就是我需要的技巧!让它像我想的那样工作。:)不起作用,一开始只是echo的“closeTab();”:(谢谢,现在移动了一些东西,它的工作方式与我尝试的一样-更简单,占用空间更少。:)
echo "closeTab();";
<html>
<head>
    <title>Ajax Logout</title>
      <style>
      .logout-button {
        background:#00aaee;
        display:inline-block;
        padding: 5px 10px;
        cursor: pointer;
      }
    </style>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>

<body>

    <div class="logout-button">logout</div>

    <script type="text/javascript">

      function closeTab(){
        confirm("test");
        //your code here
      }

      $('.logout-button').on('click', function(){
        $.ajax({
            url: ('logout.php'),
            type: 'POST',
            dataType: 'script'
          });
      });

    </script>

  </body>
</html>
<?php
session_start();
session_unset();
session_destroy();

echo "closeTab();";
?>