0

这会让我发疯。这发生在 iphone 4S Safari(IOS 6) 上,但不会发生在任何桌面浏览器上。

每次在我发出新请求之前,我都会刷新 jStorage,在 Alert test1 上,一切都如我所料。但第二个警报 Test2 显示的是来自存储的较旧数据,而不是成功功能中接收和设置的“数据” 。

这怎么可能?

$.ajaxSetup({ cache: false });
$.jStorage.flush();
    localStorage.clear();
alert("Test1 "+$.jStorage.get('token')+"tu:"+$.jStorage.get('user'));

$.ajax
    ({
        type: "POST",
        url: "rs/user/token",
        async: false,
        cache: false,
        beforeSend: function (xhr){

        },
        success: function (data){
            $.jStorage.set('token', data);
            $.jStorage.set('user',username);             
            changemenu('menu.html');
            alert("Test2 "+$.jStorage.get('token')+"tu:"+$.jStorage.get('user'));
        },
        error: function() {

        }
    });
4

1 回答 1

0

原来它与本地存储无关,STUPID IOS 6 safari 缓存所有 POST 请求,所以它在每个请求上秘密地返回相同的令牌。这是我很长时间以来见过的最愚蠢的事情!

http://arstechnica.com/apple/2012/09/developers-claim-safari-in-ios-6-breaks-web-apps-with-aggressive-caching/

iOS 6 上的 Safari 是否缓存 $.ajax 结果?

于 2013-01-29T14:13:23.627 回答