これは、ユーザーが開始したブラウザー イベントとプログラムによって開始されたブラウザー イベントの定義が異なるためです。一般に、そのイベントをアクションにバインドする jQuery の結果として発生するイベントは、プログラムによって開始されると見なされます。
$("#myElement").click(
function() {
$.ajax(...);
}
);
.click()
jQueryイベントをクリック可能なリンクなどにバインドして新しいタブを開こうとすると、同じ症状が見られます.
問題の回避策として、AJAX 呼び出しが行われる JS 関数を呼び出す HTML コードでイベント属性を使用することが考えられます。
<script type="text/javascript">
function submitAndDownload() {
$.ajax(...); //form submit
$.ajax(...); //download file
}
</script>
<button onClick="submitAndDownload();"></button>
このようにして、ブラウザはイベントをユーザーの開始と見なします。もちろん、フォーム提出ajaxリクエストのボディ内にダウンロードajaxリクエストをネストすることができます。それはあなたがする必要があることによって異なります。ただし、ミックスに他のAJAX呼び出しがある場合、他の内側にネストされている場合、ソケットの閉鎖に何らかの矛盾が見られる場合があります。