前提・実現したいこと
jQueryの「unload」イベントが発生した際、GET通信を行いたいと考えています。
イベントの中で「console.dir」による文字列出力はできるのですが、GET通信がほぼ成功しません。
「ほぼ」と記載しているのは、ごく稀(20回に1回程度)に通信が成功するときがあります。
発生している問題・エラーメッセージ
下記のソースにある通り、「①メッセージ表示」→「②GET通信(非同期)」→「③GET通信(同期」→「④メッセージ表示」としていますが、①はほぼ実行され、②以降はほぼ実行されない状態です。
#画面遷移してしまうため、Chromeデベロッパーツールでメッセージが表示されるのは一瞬だけ
ただし、「③GET通信(同期)」の際に、「同期通信は非推奨」といった警告メッセージが一瞬表示されることもあるので、処理自体は実行されているかもしれないのですが、その結果を確認できません。
該当のソースコード
jQuery
1$(window).on('unload', () => { 2 //①メッセージ表示 ほぼ実行される 3 console.dir ("before GET"); 4 5 //②GET通信(非同期) ほとんど実行されない 6 $.get('GET通信でのアクセス先URL'); 7 8 //③GET通信(同期) ほとんど実行されない、ただし「同期通信は非推奨」という警告メッセージが出るときあり 9 $.ajax ({ type: 'GET', async: false, url: 'GET通信でのアクセス先URL' }); 10 11 //④メッセージ表示 ほとんど実行されない 12 console.dir("after GET");
試したこと
画面遷移してしまうから、遷移するまでに処理が終わらないと無視されてしまうのでは、と考えて上記のコードに「window.open()」などとして新たな画面でも出そうかと思いましたが、これも画面が表示されませんでした。
unloadイベント時に、GET通信を成功させる手段をご存じの方は、何とぞご教示いただけませんでしょうか。
補足情報(FW/ツールのバージョンなど)
jQuery 3.4.1
Chrome 96.0.4664.110
回答1件
あなたの回答
tips
プレビュー