問題:
私が構築しているサイトでは、2 つの JQuery ajax ロング ポーリング呼び出しが常に保留になっています。リンクが押されたときにユーザーに [名前を付けて保存] ボックスが表示されるように、ファイルのダウンロード機能を追加しようとしています。このファイルのダウンロードは正常に機能しています。問題は、リンクが押されたときに 2 つの ajax 呼び出しがキャンセルされることです。
私は ajax 呼び出しをキャンセルしないようにするか、すぐに ajax 呼び出しを設定できるようにしようとしています。
リンクのコードは次のとおりです。
HTML:
<a href="/test" id="testfile">Tasks</a>
JS:
$(document).on('click',"#testfile",function(event){
event.preventDefault();
var href=$(this).attr('href');
window.location.href = href;
updater(); /* AJAX CALL #1 */
notifier(); /* AJAX CALL #2 */
});
私が試したこと:
上記のコードでは、ダウンロードの開始後に 2 つの ajax 呼び出しを呼び出そうとしました。これは機能していません。ダウンロードが完了した後に呼び出しが開始されるように少し遅延すると、機能しますが、ファイルが大きくなる可能性があるため、受信に不明な時間がかかるため、これはもちろん悪い解決策です.
なぜajax呼び出しがキャンセルされているのか、本当に混乱していますか? これは、リンクを押したときにページがアンロードされているためですか?
スレッドが 1 つの開発サーバーでしか実行していないため、リンクをたどった直後にセットアップしようとしている新しい ajax 呼び出しは、サーバーがビジー状態であるために失敗する可能性があります。
解決済み:
サイトの下部に非表示の iframe を追加し、それをリンクでターゲットにしました。また、ajax 呼び出しがキャンセルされなくなったため、JS コードも削除しました。
コードは次のようになります。
HTML:
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>