`

ajax beforeunload 注销session

 
阅读更多

1)在线打开一套测试题,从开始到考试结束,在测试过程中,如果用户打开多个测试链接地址同时测试,测试过程中不小心关闭测试题,测试过程中刷新页面,我们怎么准确记录测试开始时间。

2)当然我们打开测试开始保存一个session开始时间,结束时间取提交时间,

对于重新打开测试题链接地址,可以判定session开始时间是否存在,存在,给予“正在测试中,请继续您的测试”类似提醒。

3)对于测试过程中关闭或刷新,我们可以在测试题存放一个隐藏域,通过判定这个隐藏域是否存在,在每次关闭或刷新时候执行ajax,注销session开始时间,这样就不会出现刷新跳转到“正在测试中,....”页面,用户无法再打开测试题。

4)部分js代码:

$(window).bind('beforeunload',function(){

if($("#winid_yinchang").length<=0)

   return;

$.ajax({

   async:false,(注意:如果没有缺少,就会导致刷新页面阻止ajax执行,不会注销session)

   type:'POST',

   url:OC:filePath('interview', 'ajax', 'emptytime.php');

   data:{sheetid:sheetid}

   dataType:'json',

   success:function(rtn){

      //do nothing

      }

});

});

 

emptytime.php--code here(仅供参考):

<?php

$sheetid = JRequest::getInt('sheetid', 0);

$app = PFactory::getApplication();

$app->setUserState('persontest_start_time_' . $sheetid, null);//注销session

OCP\JSON::success();

 

 

 

分享到:
评论

相关推荐

    ajax学习源码

    因此,通常在beforeunload或unload事件中取消请求。 **五、jQuery和其他库对Ajax的封装** 为了简化Ajax的使用,jQuery提供了$.ajax()、$.get()、$.post()等函数。其他库如axios、fetch API也提供了更简洁的API,让...

    在Web关闭页面时发送Ajax请求的实现方法

    又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作。 本文主要分两部分来讲解怎么完成退出行为的上报。 1.事件监听 浏览器有两个事件可以用来监听页面关闭,beforeunload和unload。 ...

    关闭页面时自动清除session的实用方法.txt

    你可以将Session ID存储在`sessionStorage`中,然后在`beforeunload`事件中调用服务器接口清除Session。 这种方法的一个关键问题是跨域问题。因为浏览器的同源策略限制,前端可能无法直接访问不同域名下的Session。...

    beforeunload-request:一个统一的 API,用于在 beforeunload 上可靠地发送数据

    一个统一的 API,用于在beforeunload上可靠地发送数据。 为什么 通常需要在页面关闭之前将数据发送到服务器。 在这种情况下不能保证发送异步 XHR 请求,因此传统开发人员使用同步 XHR 请求。 然而,由于beforeunload...

    react-beforeunload:React组件和挂钩,侦听beforeunload窗口事件

    参数handler函数来调用BeforeUnloadEvent时beforeunload事件。例子import { useBeforeunload } from 'react-beforeunload' ;const Example = ( props ) =&gt; { const [ value , setValue ] = useState ( '' ) ; ...

    Firefox中beforeunload事件的实现缺陷浅析

    在互联网技术中,beforeunload事件是一个浏览器提供的事件,它在窗口、文档或者其资源即将卸载之前触发。这个事件的用途通常在于防止用户在未保存更改的情况下意外离开页面。在Web开发中,beforeunload事件的应用...

    beforeunload.js:适用于window.beforeunload的API也可与Turbolinks 2一起使用

    beforeunload.js 原料药 BeforeUnload . enable ( # Only gets triggered if this returns truthy if : -&gt; inputHasChanged # The warning message that is displayed message : " You have entered data that ...

    ajax自动刷新

    window.addEventListener('beforeunload', function() { clearInterval(refreshInterval); }); ``` ### 7. 提高性能 - 使用`cache: false`防止缓存,确保每次获取最新数据。 - 考虑使用Promise或async/await进行...

    javascript判断页面是否是刷新还是关闭

    1. `beforeunload` 事件:当用户尝试离开当前页面时(如点击刷新按钮、关闭窗口或导航到另一个URL),浏览器会先触发`beforeunload`事件。这是一个预卸载事件,允许开发者进行确认操作,比如询问用户是否确定要离开...

    注销后浏览器后退按钮问题

    9. **前端拦截**:利用JavaScript监听浏览器的popstate、hashchange和beforeunload事件,可以捕获并处理后退操作,防止用户无意间回到已注销的页面。 10. **服务器端验证**:即使前端采取了预防措施,服务器端也应...

    ActiveMQ(AMQ)单浏览器AJAX多页面客户端的支持(clientId)

    这通常涉及监听`beforeunload`或`unload`事件,然后在新页面加载时恢复连接。 5. **共享状态管理**:由于`clientId`保证了消息的一致性,你还需要在客户端管理订阅状态,确保新页面加载时不会重复订阅。这可能需要...

    单点登录+在线列表+防浏览器关闭

    3. **AJAX轮询**:通过定时发送AJAX请求,服务器可以检查客户端是否在线。如果在一段时间内没有收到客户端的响应,可以认为用户已离线,然后清理相关资源。 4. **事件监听**:利用JavaScript监听浏览器的`...

    js如何控制防刷新功能

    这通常通过使用局部存储(如`localStorage`或`sessionStorage`)、AJAX异步更新、以及利用事件监听等技术来实现。下面我们将详细探讨这些方法。 1. **利用`localStorage`或`sessionStorage`** `localStorage`和`...

    解决vue刷新页面以后丢失store的数据问题

    2. **页面刷新时保存store到sessionStorage**:监听`beforeunload`事件,这个事件在页面即将刷新或卸载时触发。在这个事件的回调函数中,将store的状态序列化为JSON字符串,并存入sessionStorage的'store'键中。 ``...

    判断浏览器刷新还是关闭

    在这些阶段,我们可以监听到一些特定的事件,例如`load`、`beforeunload`和`unload`等,它们可以帮助我们判断当前的页面状态。 1. **`load`事件**:当页面所有资源(包括图片、脚本等)都加载完毕后触发。如果页面...

    关闭页面之前传递数据到父页面

    但是,由于安全和用户体验的原因,浏览器对`beforeunload`事件的处理进行了限制,不能直接进行异步操作(如Ajax请求),因为这可能会阻止页面的正常关闭。因此,我们通常会采用以下策略: 1. 使用`localStorage`或`...

    页面离开时检查表单是否改变

    jQuery则是一个基于JavaScript的库,简化了DOM操作、事件处理、动画制作以及Ajax交互等任务,使得开发者能够更高效地编写代码。 要实现"页面离开时检查表单是否改变"的功能,首先我们需要监听表单元素的变化。这...

    基于jQuery实现的当离开页面时出现提示的实现代码

    它能够简化DOM操作、事件处理、动画和Ajax交互,使得开发者能够以更少的代码更快地完成任务。 ### beforeunload事件 在Web开发中,`beforeunload`事件可以用来检测用户是否打算离开当前页面。如果页面未保存的工作...

Global site tag (gtag.js) - Google Analytics