问题:
在我正在构建的网站上,我有两个持续挂起的 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 调用可能会失败,因为服务器正忙,可能是这种情况吗?
已解决:
我在网站的底部添加了一个隐藏的 iframe,并通过我的链接将其作为目标。我还删除了 JS 代码,因为现在不会取消 ajax 调用。
代码现在看起来像这样:
HTML:
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
最佳答案
使用 yoavmatchulsky 的答案,问题解决了:
我在网站的底部添加了一个隐藏的 iframe,并通过我的链接将其作为目标。我还删除了 JS 代码,因为现在不会取消 ajax 调用。
代码现在看起来像这样:
HTML:
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
关于javascript - 文件下载的 Http 请求停止 JQuery ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686416/