English 中文(简体)
页: 1
原标题:$(window).unload wait for AJAX call to finish before leaving a webpage [duplicate]

基本上,一旦用户在我的申请中留下一个网页,我就需要向美国宇宙航空研究开发机构发出一个PHP书,在网页上添加一个时间,然后离开网页。

等待美国宇宙航空研究开发机构的请求必须完成,因为除非用户在前一页上花了一定时间,否则我申请中的网页无法进入。

这里是我的支部法典:

$(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
        });
    });

});

我应如何改变这一说法,这样,它就将等到非洲复兴共和与民主军的要求结束后才离开网页?

EDIT:

或者说,让AJAX的请求每分钟重复一次会更好(更可取)。 这是可能的吗?

最佳回答

当然,你可以制定<条码>sync:不实,要求你让浏览器等到申请完成之前再做任何事情,但指出,在申请期间,这将会使浏览器hang。

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

手册:

<上>所有请求均按时间顺序提出(即按违约确定)。 如果你需要同步的请求,就将这一选择定为不实。 交叉主要要求和数据表:“jsonp”要求不支持同步运行。 请注意,同步请求可暂时锁定浏览器,在请求有效时放弃任何行动。

⚠ WARNING:这一答案在2010年公布,现在已经过时——XHR specification

Synchronous XMLHttpRequest out from the web table,因为它对终端用户的经验产生不利影响。 (这是一个需要多年的长期进程)。 当目前的全球物体为温得物体时,不得以yn为借口。 大力鼓励用户在开发工具中警告这种使用,并在出现“InvalidAccessError” DOMException时进行实验。

Chrome的DevTools公司最近开始对此提出警告,因此这一变化(几年来)可能迫在眉睫。

问题回答

如何在卸载手里安装 co子? 服务器应当查阅随后的请求。

<script>
    $(window).unload(function(){document.cookie= left_on= +(new Date())})
</script>

for me, yours is not a good idea for the browser to wait before closing...
simply because what if I really want to close it?...

如果一页的用户不好......

我的建议是,在网页上,你等待2分钟(如果要求有2分钟),然后派一个分析器,供用户用2分钟......。

如果服务机面有2分钟或2分钟,可以检查。

试图和劫持你的用户浏览器是一种坏的想法,因为这将给他们一种坏感,将他们送走。

如果出于某种原因,在用户在以前的时间内花了最低限度的时间之前,你不想制作一个新的网页,那么,最好的事就是试验服务器,即,在所要求的时间过去之前,将服务器转至目前的网页。

你们甚至不需要打听,只是把上页的时间放在会场上,在一定时间过去之前就没有显示下页。

保证告诉用户,他们必须等待一个新网页的准备就绪,也许会有一个简单的 j缩。

如果您希望用户在一定时间内(即不转而等待两分钟时间的另外一个表格/窗口)实际使用该网页,那么我就不能提出有效的解决办法。

:

$(document).ready(function(){
  window.onbeforeunload = function(){
     // $.ajax stuff here
     return false;
  }
});

这至少将给用户一个<代码>message Box,该编码如果他想要关闭目前的窗口/表格,就会问他。

我认为,像你所建议的那样,最好使用投票技术,尽管这将在网络服务器上造成一些负荷。

$(document).ready(function() {

    var teid = TEID;
    var startTime = new Date().getTime();

    var ajaxFunc = 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
        });
    };

    setInterval(ajaxFunc, 60000);

})

如果你能够使用网址,你将感到高兴:

<代码>jQuery.ajax()方法有以下选择: 如果您将其定为<代码>false。 该呼吁将受阻,直到回复回来(或时间待定)。 我的粗略sh,即这样说,就会把浏览器推给卸载手里的我们。

说明: 你不能依靠这项工作。 如果浏览器让用户选择取消卸载处理器(有些浏览器在等待时进行),那么“现场花费”就永远不会更新。 你可以给网站增加一个时间,该网站定期打电话给服务器,并更新时间。 你们赢得了一定价值,但就你而言,这是需要的。

如果你只需要知道用户是否在网页上是X秒钟。 你可以简单地在载荷手上设定一个排出时间(使用<条码>(功能、位数)),如果使用者花了所需时间,就可发出呼吁。 因此,不需要一个卸载手。





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.