javascript - 页面在更改位置之前等待 AJAX

标签 javascript ajax load

这个问题可能看起来有点奇怪,这个问题是在页面通过 webtest 时出现的。

该页面使用 AJAX 调用(异步设置为 true)来收集一些数据。由于某种原因,它不会在 AJAX 调用返回之前交换页面 - 请考虑以下代码:

console.log("firing ajax call");
$.ajax({
        type:    "POST",
        url:      "requestedService",
        data:     mode : "requestedMethod",
        cache:    false,
        dataType: "json",
        success:  function() { console.log("ajax response received") },
        error:    null,
        complete: null,
    });
console.log("changing window location");
window.location = "http://www.google.com"

位置仅在 AJAX 返回响应后发生变化。我已经测试了这个调用,它实际上是异步的,页面没有被阻塞。它应该只加载新页面,即使 AJAX 调用尚未完成,但没有完成。我可以看到页面正在尝试加载,但它只会在我收到响应后才会发生。有什么想法吗?

控制台输出为:

firing ajax call
changing window location
ajax response received

最佳答案

这对我来说似乎很好用。在异步处理程序中的代码执行之前更改位置。也许您应该发布一些真实代码而不是简化版本,以便我们提供更好的帮助。

这是一个如您所愿的演示:http://jsfiddle.net/BSg9P/

$(document).ready(function() {

    var result;

    $("#btn").on('click', function(sender, args) {
        setInterval(function() {
            result = "some result";
            console.log("Just returned a result");
        }, 5000);
        window.location = "http://www.google.com";
     });

});

这是结果的屏幕截图:http://screencast.com/t/VbxMCxxyIbB

我已经点击了2次按钮,你可以在JS控制台看到每次都在结果之前打印关于位置变化的信息。 (该错误与CORS有关,如果是同一个域,它会导航)。

关于javascript - 页面在更改位置之前等待 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706481/

相关文章:

javascript - 使用 AJAX 自动更新 Symfony5 表单多选(选择列表)数据

java - GWT vs Flex vs?

jquery - 如何剪切背景图像以正确延迟加载?

dom中所有图像加载后jquery回调?

javascript - 带有定位占位符或等效内容的字符串格式

javascript - "Access-Control-Allow-Origin"错误,当我有 "Access-Control-Allow-Origin: *"

javascript - 如何将标记添加到谷歌地图并延迟

javascript - 更改 <p> 值 onclick 不起作用

javascript - 使用ajax显示正在选择的内容不起作用,PHP,AJAX,JAVASCRIPT

ruby - 为什么我无法使用 `load` 加载具有特定文件名的脚本?