2013-02-06 30 views
2

感谢这篇文章,我能够解决移动Safari会缓存ajax POST请求的问题。添加“标题:{'Cache-Control':'no-cache'}”似乎为我的移动Safari浏览器的窍门。如何在移动Safari浏览器应用程序中缓存AJAX POST?

但是,当我通过移动Safari浏览器访问我的网站时,ajax请求仍然被缓存。我一直无法找到解决方案,所以我想在这里发布。除了添加上面提到的头部之外,我还尝试添加“cache:false”,并将“url:'/ ajax_url?v ='+ time”加入。似乎没有任何工作。

为什么移动Safari浏览器与webapp的不同行为?我该如何解决这个问题?

编辑:

忘记我的密码。它是:

function send_ajax(my_data,refresh){ 
    var now = new Date(); 
     var n = now.getTime(); 
    $.ajax({ 
     url: "/ajax_page?time=" + n, 
     type: "POST", 
     headers: {"cache-control": "no-cache"}, 
     data: my_data, 
     dataType: 'json' 
     }) 
     .fail(function (jqXHR, textStatus, errorThrown){ 
     }) 
     .done(function(data){ // refresh the page after we get the results 
     if(refresh=='true'){ 
      var pathArray = window.location.pathname.split('/'); 
      window.location.href = '/' + pathArray[1]; 

     } 
     });   

    } 

send_ajax({'my_checkbox': $('#my_checkbox').is(':checked') },'true'); 

回答

2

一个始终有效的解决方案是向请求发出请求的参数(基本上是时间戳)添加一个参数。这使得每个请求都成为服务器必须处理的唯一雪花。

它与将您的网站版本放入所有脚本/ css文件名称的想法类似,以便更新后到达您网站的用户必须下载新文件。

+0

我之前试过,我刚刚尝试过,现在没有运气 –

+0

@ Mr.Gaga没有代码,没有人能够帮助你进一步的不幸。 – thatidiotguy

+0

我加了我的代码。我甚至尝试将其更改为GET请求,但只有通过桌面链接访问移动Safari浏览器页面时,它才会缓存。如果我通过其他应用内方法访问该页面(请考虑在Twitter应用中打开页面)那么一切正常。我很困惑! –

相关问题