【问题标题】:How to prevent cancellation of ajax request upon redirect?如何防止在重定向时取消ajax请求?
【发布时间】:2011-01-25 21:58:06
【问题描述】:

这是我的第一个 ajax 请求。我不希望客户端浏览器等待,所以我的代码不等待成功。它立即重定向到另一个页面。但它不起作用。

$.ajax({
            data: '{}',
            url: "Service.asmx/GetNextID",
            success: function(msg1) { 
                $.ajax({
                    type: "POST", cache: false, contentType: "application/json; charset=utf-8", dataType: "json", timeout: 5000,
                    url: "Service.asmx/SaveData",
                    dataFilter: function(data) {var msg = (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function') ? JSON.parse(data) : eval('(' + data + ')');return (msg.hasOwnProperty('d')) ? msg.d : msg;},
                    data: "{ID:'" + $get('<%=txt1.ClientID %>').value + "',Date:'<%=cutoffdate%>',data:'" + $("#<%=txt2.ClientID %>").val() + "'}",
                    error: function(xhr, desc, exception){
                        alert("Failed!");
                }
                });
                window.location = "../Result.aspx?ID=" + msg1.ID;
            },
            error: function(xhr, desc, exception) {
            }
        });

因此,由于它不等待成功并重定向到另一个页面,因此下一次调用“SavaData”将被取消。

有什么解决办法吗?

【问题讨论】:

  • 对我来说听起来不太对劲。 ajax 调用需要等到它得到响应才能知道它是 200 还是 302 响应。不等待成功如何重定向?

标签: ajax json jquery webmethod


【解决方案1】:

在重定向之前等待几秒钟?

【讨论】:

  • 你认为它只需要几毫秒就可以工作吗?你能解释一下吗?
  • 看到事情在 javascript 中,事情通常是异步发生的。在触发 ajax 调用之后,会发生重定向,这可能会停止 ajax 调用。你想要做的是火灾并忘记ajax调用......对吗?所以进行ajax调用。给它几毫秒或者可能是一秒钟然后重定向。在大多数情况下,它将确保 ajax 被触发。一旦 http 请求被发送到服务器,它就不能被回调。否则触发该 ajax 调用,而不是重定向,获取结果页面并将其替换为现有的 dom。
猜你喜欢
  • 2012-11-21
  • 2014-10-09
  • 2012-01-04
  • 1970-01-01
  • 2021-08-27
  • 2011-05-31
  • 2018-09-14
  • 1970-01-01
  • 2016-11-14
相关资源
最近更新 更多