亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

頁面上帶有JQuery的Ajax請求卸載

頁面上帶有JQuery的Ajax請求卸載

子衿沉夜 2019-11-28 13:03:07
我正在嘗試這樣做:$(window).unload( function () { $.ajax({    type: "POST",    url: "http://localhost:8888/test.php?",    data: "test",    success: function(msg){         alert( "Data Saved: " + msg );    }}); alert (c);});但是,永遠不會顯示成功警報,該請求似乎也沒有擊中服務器。我究竟做錯了什么?
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

我相信您需要使用async : false參數來使請求同步(默認情況下是異步的)。

同步請求將鎖定瀏覽器,直到完成為止。如果請求是異步的,則頁面只會繼續卸載。它足夠快,以至于請求甚至都沒有時間觸發。


查看完整回答
反對 回復 2019-11-28
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

最好的解決方案是使用navigator.sendBeacon。它是全新的功能,已開始在新版本的瀏覽器中實現。該功能在Chrome 39和Firefox 31以后的瀏覽器中可用。在撰寫本文時,Internet Explorer和Safari不支持該功能。為了確保您的請求能夠在尚不支持新功能的瀏覽器中發送,您可以使用以下解決方案:


var navigator.sendBeacon = navigator.sendBeacon || function (url, data) {

  var client = new XMLHttpRequest();

  client.open("POST", url, false); // third parameter indicates sync xhr

  client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

  client.send(data);

};

但是,此函數不允許您注冊成功回調。


查看完整回答
反對 回復 2019-11-28
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

您的函數和Ajax調用看起來不錯,所以我的猜測是,在ajax調用有時間進入服務器并返回之前,瀏覽器窗口已關閉。窗口關閉時,ajax調用可能返回一些信息,請嘗試向您的ajax調用添加錯誤功能,以查看是否為這種情況:


error: function (xhr, textStatus) {

    alert('Server error: '+ textStatus);

}


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 542 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號