問題:
私が構築しているサイトでは、2つのJQueryajaxロングポーリング呼び出しが常に保留されています。私は今、ファイルのダウンロード機能を入れようとしています。そのため、リンクが押されると、ユーザーは[名前を付けて保存]ボックスでプロンプトが表示されます。このファイルのダウンロードは正常に機能しています。問題は、リンクが押されると、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>
yoavmatchulskyからの回答を使用して、問題は解決されました。
サイトの下部に非表示のiframeを追加し、リンクでそれをターゲットにしました。また、ajax呼び出しがキャンセルされていないため、JSコードも削除しました。
コードは次のようになります。
HTML:
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加