Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 缓存为false时从缓存获取数据_Jquery_Ajax - Fatal编程技术网

Jquery 缓存为false时从缓存获取数据

Jquery 缓存为false时从缓存获取数据,jquery,ajax,Jquery,Ajax,我正在使用以下代码自动登录到我的电子邮件帐户: $.ajax({ async: false, cache: false, type: 'POST', dataType: 'html', data: ({ '_token': token_value, '_task': 'login', '_action': 'login', '_timezone': '2', '_dstactive': '0',

我正在使用以下代码自动登录到我的电子邮件帐户:

$.ajax({
   async: false,
   cache: false,
   type: 'POST',
   dataType: 'html',
   data: ({
       '_token': token_value,
       '_task': 'login',
       '_action': 'login',
       '_timezone': '2',
       '_dstactive': '0',
       '_url': '',
       '_user': _username,
       '_pass': _password
   }),
   url: 'https://mail.somesite.com/index.php',
   success: function (data) {
       //after login get the central email page where the email count is displayed
       $.ajax({
           async: false,
           cache: false,
           type: 'GET',
           dataType: 'html',
           url: 'https://mail.somesite.com/index.php?_task=mail',
           success: function(data1) {
               var descNode = document.createElement("div");
               descNode.innerHTML = data1;
               var unreadcount = descNode.getElementsByClassName("unreadcount");
            /*process unreadcount etc*/
         },
         error: function () {
            // something went wrong with the request
            error_occurred();
            return;
         }
      });
   },
   error: function () {
      // something went wrong with the request
      error_occurred();
      return;
   }
})
问题是,在获取类为“unreadcount”的对象以获取用户的未读电子邮件计数后,我会得到一个旧页面

例如,如果我登录到我的电子邮件帐户,看到我有2封电子邮件,我运行此功能,我会被告知我有2封电子邮件。如果我从我的帐户注销,从另一个帐户向我的帐户发送电子邮件并重新运行此功能,它将找不到新的电子邮件(它仍将仅显示2封电子邮件)。我已经尝试过使用
console.log()
查看data1的内容,我非常确定该函数没有做错什么(因为'unreadcount'的值实际上仍然是2)

当然,当我正常登录时,我可以看到我的帐户中有3封电子邮件。奇怪的是,在登录(即使我在此之后注销)并运行上述功能后,它会找到第三封电子邮件


所有这些使我得出结论,我被引导到一个缓存页面,但我在任何时候都将缓存设置为false。如何避免这种情况发生?

或者它不是缓存,但是服务器/您的电子邮件客户端“知道”您没有通过浏览器查看电子邮件(“因为您使用的是ajax调用”),并且没有从服务器获取新的电子邮件。我不知道这是否可能,但我可以想象服务器对这些事情的看法是不同的。不要认为这是缓存,但要确保您可以向url中添加一个唯一的参数(例如)。我应该从唯一的参数@SanderBruggeman中得到什么?我认为这不会有任何区别,主要是因为我认为这是我的第一个建议:如果您试图通过Ajax调用访问/获取页面,您的邮件客户端不会获取新的电子邮件。。唯一的参数只是为了确保它总是一个不同的url,所以它不会从缓存中获取它(我很确定它无论如何都不会,但仍然如此)。我只是想到了发生这种情况的原因:在页面加载后,您的电子邮件客户机还使用ajax调用(或类似的调用)来获取您的新电子邮件。也许它太快了,但当你通过浏览器访问你的电子邮件客户端时,有时是否需要一分钟来加载新的电子邮件?或者您的客户是否有自定义预加载程序?(我知道Gmail有,那可能也不起作用。)@SanderBruggeman是的,你是100%正确!一旦页面加载,那里就没有电子邮件计数器。但大约100毫秒后,计数器将就位!因此,你的理论是,新的电子邮件是在一些电话之后添加的,而不是立即添加的,这是正确的。有什么可能的解决办法吗?获取页面后,我是否可以“等待”此计数器取代其位置,然后获取其值,或者类似的操作是不可能的?非常感谢:)