首页 > 解决方案 > 延迟在 IE 11 上保存会话变量?

问题描述

我有一个应用程序,它使用 Ajax 调用来使用 PHP 脚本获取会话变量。在所有浏览器中,这都能完美运行,但在 IE 11 中,它只有在页面重新加载后才能运行。因此,当页面加载时,Ajax 调用返回 null,但是当我重新加载页面时它确实返回。

$.ajax({
    type: "GET",
    url: "/ajax/fetch/session",
    success: function(data) {
        obj_fields = $.parseJSON(data);
        console.log(obj_fields);
    }
});

当我在多页表单上使用它时,每个页面的值首先存储在会话中,我注意到例如当我填写第一页,提交下一页时,我需要重新加载以获取会话。从第 2 页到第 3 页,第 1 页的会话变量被加载,但只有在页面重新加载后才从第 2 页存储的会话变量。我唯一能想到的是 IE 需要一段时间才能在会话中存储变量。

这个对吗?我怎样才能最好地解决这样的问题?

或者 Ajax 调用的返回值是否以某种方式缓存在 IE 中?

在进行 Ajax 调用之前,我已经尝试过延迟 5 秒,但这也不起作用。仅在页面重新加载时

标签: javascriptphpjquery

解决方案


缓存默认设置为 true,尝试禁用如下:

$.ajax({
    type: "GET",
    url: "/ajax/fetch/session",
    cache: false,
    success: function(data) {
        obj_fields = $.parseJSON(data);
        console.log(obj_fields);
    }
});

缓存(默认值:true,对于 dataType 'script' 和 'jsonp' 为 false) 类型:Boolean 如果设置为 false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 仅适用于 HEAD 和 GET 请求。它通过将“_={timestamp}”附加到 GET 参数来工作。其他类型的请求不需要该参数,除非在 IE8 中对已由 GET 请求的 URL 进行 POST。

https://api.jquery.com/jquery.ajax/


推荐阅读