小编典典

$(window).unload等待AJAX​​调用完成,然后再离开网页[重复]

ajax

基本上,一旦用户在我的应用程序中离开了网页,我就需要使用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请求可能会更好(更轻松)。那可能吗?


阅读 256

收藏
2020-07-26

共1个答案

小编典典

好了,您可以async:false在AJAX调用上进行设置,以使浏览器在完成任何其他操作之前先等待请求完成,但是请注意,这将在请求期间将浏览器“挂起”。

$.ajax({
    type: 'POST',
    async: false,
    url: '/clientarea/utils/record-time',
    data: 'teid=' + teid + '&t=' + t
});

从手册中:

默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和dataType:“
jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。

2020-07-26