基本上,一旦用户在我的应用程序中离开了网页,我就需要使用AJAX调用PHP脚本,这会将在网页上花费的时间插入数据库中,然后离开该页面。
重要的是要等待AJAX请求完成,因为用户无法访问我的应用程序中的网页,除非用户在前一页上花费了一定的时间(例如两分钟)。
这是我的jQuery代码:
$(document).ready(function() { var teid = TEID; var startTime = new Date().getTime(); $(window).unload(function() { var timeSpentMilliseconds = new Date().getTime() - startTime; var t = timeSpentMilliseconds / 1000 / 60; $.ajax({ type: 'POST', url: '/clientarea/utils/record-time', data: 'teid=' + teid + '&t=' + t }); }); });
我应该如何更改它,以便它将在离开网页之前等待AJAX请求结束?
编辑:
或者,最好每隔一分钟左右重复一次AJAX请求可能会更好(更轻松)。那可能吗?
好了,您可以async:false在AJAX调用上进行设置,以使浏览器在完成任何其他操作之前先等待请求完成,但是请注意,这将在请求期间将浏览器“挂起”。
async:false
$.ajax({ type: 'POST', async: false, url: '/clientarea/utils/record-time', data: 'teid=' + teid + '&t=' + t });
从手册中:
默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和dataType:“ jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。