延迟是在 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 秒的延迟,但这也不起作用。仅在页面重新加载时


三国纷争
浏览 86回答 2
2回答

九州编程

默认情况下缓存设置为 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/

牛魔王的故事

这可能是服务器机器名称的问题。相信我 Internet Explorer 似乎是一个垃圾。我过去有过这样的经历。您将需要调查服务器计算机的名称。Internet Explorer 总是遇到带有“-”或“_” 或任何其他奇怪字符的机器名称的问题,因此,IE 无法轻松维护 php 会话。您需要确保机器名称没有IE无法识别的字符。或者您可以更好地使用服务器 Ipaddress 代替机器名称。例如,像2_6.nancy.com这样的机器名称将不起作用,但26.nancy.com可以,等等......
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript