문제:
내가 구축중인 사이트에는 두 개의 JQuery ajax 긴 폴링 호출이 지속적으로 보류 중입니다. 이제 파일 다운로드 기능을 추가하려고하므로 링크를 누르면 사용자에게 다른 이름으로 저장 상자가 표시됩니다. 이 파일 다운로드는 정상적으로 작동하며 문제는 링크를 누르면 두 개의 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 */
});
내가 시도한 것 :
위의 코드는 다운로드를 시작한 후 두 개의 ajax 호출을 호출하려고했습니다. 이것은 작동하지 않습니다. 다운로드가 완료된 후 호출이 시작되도록 약간의 지연을두면 작동하지만 파일이 커질 수 있으므로 알 수없는 시간이 걸리는 것은 물론 나쁜 해결책입니다.
Ajax 호출이 취소되는 이유에 대해 정말 혼란 스럽습니까? 링크를 누르면 페이지가 언로드되기 때문입니까?
하나의 스레드가있는 개발 서버에서만 실행중인 것을 보면 링크를 따라가는 즉시 설정하려는 새로운 ajax 호출이 서버가 사용 중이기 때문에 실패 할 수 있습니다.
해결 :
나는 사이트의 buttom에 숨겨진 iframe을 추가하고 내 링크로 타겟팅했습니다. ajax 호출이 이제 취소되지 않기 때문에 JS 코드도 제거했습니다.
이제 코드는 다음과 같습니다.
HTML :
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
yoavmatchulsky의 답변을 사용하여 문제가 해결되었습니다.
나는 사이트의 buttom에 숨겨진 iframe을 추가하고 내 링크로 타겟팅했습니다. ajax 호출이 이제 취소되지 않기 때문에 JS 코드도 제거했습니다.
이제 코드는 다음과 같습니다.
HTML :
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다