7

问题:

在我正在构建的站点上,我有两个 JQuery ajax 长轮询调用不断挂起。我现在正在尝试添加文件下载功能,以便在按下链接时提示用户使用 SaveAs 框。该文件的下载工作正常,问题是当按下链接时,两个 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>
4

1 回答 1

5

使用 yoavmatchulsky 的答案,问题解决了:

我在网站的底部添加了一个隐藏的 iframe,并通过我的链接来定位它。我还删除了 JS 代码,因为现在没有取消 ajax 调用。

代码现在看起来像这样:

HTML:

<a href="/test" target="filetargetframe"  id="testfile">Tasks</a>

********

<iframe name="filetargetframe" style="display:none"></iframe>
于 2014-05-22T09:22:15.550 回答