【问题标题】:How to prevent ajax request from being canceled on iphone?如何防止 ajax 请求在 iphone 上被取消?
【发布时间】:2012-11-21 21:09:44
【问题描述】:

我正在使用 MVC 4,在提交表单上我得到一个 pdf 文件。在这种形式中,我使用 ajax get request 从控制器获取一些数据。问题是,当我在提交表单后获取 pdf 文件时,在 iphone 上,pdf 会在同一页面上内联打开,并且在我返回程序页面后,我所有页面上的 ajax 请求都停止工作(他们在他们完成他们的请求之前都被取消了)。我一直在寻找一些解决方案,但没有任何帮助。我尝试过的解决方案是; cache: false - 在 ajax 请求中。 向 url 添加一个时间参数,每次时间参数都会改变。 我一直在阅读有关此问题的信息,并且我发现的唯一一件事是,如果 ajax 请求状态返回 0,则意味着 ajax 请求在完成之前被取消。 它只发生在 iphone 上,因为它是内联打开 pdf 文件,而不是像在其他所有东西上那样下载它。 请帮我解决这个问题,我已经尝试了很长时间了。

这是我正在使用的 ajax 代码:

$.ajax({
    type: 'GET',
    url: '/IncomeExpenses/UpdateInvoiceData?time=' + new Date().getTime(),
    data: str,
    cache: false,
    dataType: 'json',
    success: function (data) {
        //some code
    }
});

【问题讨论】:

  • 我不确定我是否理解正确,但是你不能在ajax调用后打开pdf,这样它不会取消你的ajax调用吗?
  • 我在 ajax 调用后打开 pdf。我第一次在 iphone 浏览器上打开我的程序(没关系)它可以工作,但是在我提交表单并获取 pdf 文件后,ajax 调用停止工作。只有当我关闭浏览器从后台关闭时它才有效。

标签: javascript ajax model-view-controller


【解决方案1】:

制作async: false 将有助于解决这个问题。通过这种方式,我们通过使 AJAX 请求与浏览器同步来强制浏览器等待响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2011-04-23
    • 2011-01-28
    • 2011-05-31
    相关资源
    最近更新 更多