是否有任何可能性如何发送一个AJAX后关闭浏览器窗口
Is there any possibility how to send an AJAX after close the browser window?
是否有可能在关闭浏览器窗口后发送AJAX ?
我有一个在JavaScript (jQuery)中移动的浏览器游戏,如果我在每次移动后发送Ajax,这对服务器来说将是困难的。所以我想发送一个AJAX当用户关闭窗口(或书签)。它必须在所有现代浏览器中都能运行。
感谢您的回答
我建议你在某种定时器上更新服务器,这样服务器就不会太迟知道客户端处于什么状态(当客户端处于活动状态时可能每60秒),当客户端不活动时暂停服务器更新。
然后,在你的用户界面中,放一些明显的用户界面元素为关闭或停止,鼓励用户以这种方式关闭,然后当这些按钮中的任何一个被点击时更新服务器。
然后,您还可以为页面挂钩unload
事件,然后发送最后一个ajax调用。但是,并不是在所有情况下都调用它,也不是在所有浏览器中都支持它,所以除了前面两种技术之外,还需要执行此操作。
我不认为有一个实际的方法去做…但你的问题肯定有解决办法的。
您可以在某个时间间隔或当游戏到达特定阶段时发送请求。
我们没有看到完整的场景,所以请多评估一点,这样我或其他人可以帮助。
如果可能的话. .我会添加"保存状态"或"保存"按钮。所以用户知道,如果他不点击"保存"什么也不会被"保存"。
您可以尝试window.onbeforeunload
,例如:
function saveGame(e) {
if (!e) e = window.event;
//Ajax here
}
window.onbeforeunload = saveGame;
关闭浏览器窗口后无法发送任何ajax请求。但是你可以使用onUnload事件发送ajax请求当用户点击关闭按钮的窗口
我可以这样建议:
- 调用窗口。卸载(注意firefox!)并将当前位置存储在服务器中。重要:做这个异步调用。
- 在服务器中保存用户的状态(离开页面)
- 在全局请求事件处理程序中编写代码并查询此状态。
- 您可以在服务器中启动线程来调用最终卸载(例如,在5秒后)没有来自客户端的新请求
我知道这些步骤很难实现,但是它们能解决你的问题。
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- 作为一个二维数组,从ajax接收
- 在任何AJAX调用之前触发一个javascript函数
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 一个ajax循环有两个输出错误innerHTML
- 我可以让我的Ajax调用引起一个“;进行中”;光标
- 另一个Ajax函数触发的Ajax函数不起作用
- 是否可以创建一个带有进度条的跨浏览器AJAX照片上传器
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- Ajax/Php得到一个以上的结果
- 在jQuery AJAX请求后创建一个Cookie
- 需要一个用于AJAX的Javascript库,其中包含多部分/表单数据
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- 是纯粹的Ajax一个javascript库
- 两个提交一个ajax一个常规表单
- 如何解决这个问题,在java脚本和ajax一个警报显示在ajax,如果值是正确的
- 传递给ajax一个带有"/"的字符串