问题:
在我正在构建的网站上,我有两个 JQuery ajax 长轮询调用一直处于挂起状态。现在我正在尝试添加一个文件下载功能,以便当用户按下链接时,用户会被提示保存框。该文件的下载正常工作,问题是当用户按下该链接时,这两个ajax调用被取消了。
我要么不想取消ajax调用,要么想立即设置ajax调用的可能性。
以下是链接的代码:
HTML:
在上面的代码中,我试图在启动下载后调用两个ajax调用。但是这不起作用。如果我加入一些延迟,以便在下载完成后启动调用,则可以正常工作。但由于文件可能很大,因此需要花费未知的时间来接收,因此这当然是一个不好的解决方案。
我真的很困惑为什么ajax调用被取消了?这是因为我按下链接时页面被卸载了吗?
考虑到我只在具有一个线程的开发服务器上运行,所以我在跟随链接后尝试设置的新ajax调用可能会因服务器繁忙而失败,这可能是原因吗?
解决方法:
我在站点底部添加了一个隐藏的iframe,并使用我的链接进行了定位。我还删除了JS代码,因为现在不再取消ajax调用。
代码现在如下所示:
HTML:
在我正在构建的网站上,我有两个 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>
window.location.href
会改变页面,这将取消所有操作。尝试创建一个iframe
并将src
设置为href
,或许可以解决问题。 - yoavmatchulsky