【问题标题】:How do I not cache AJAX POST in mobile safari app?如何不在移动 Safari 应用程序中缓存 AJAX POST?
【发布时间】:2013-01-21 22:17:25
【问题描述】:

感谢这篇文章,我能够解决移动 safari 缓存 ajax POST 请求的问题。添加“headers: {'Cache-Control': 'no-cache'}”似乎对我在移动 safari 中的页面起到了作用。

但是,当我通过移动 safari webapp 访问我的网站时,ajax 请求仍然被缓存。我一直无法找到解决方案,所以我想我会在这里发布。除了添加上面提到的标头之外,我还尝试添加“cache: false”以及放置“url:'/ajax_url?v='+time”。似乎没有任何效果。

为什么移动 safari 与 web 应用程序的行为不同?我该如何解决这个问题?

编辑:

忘记了我的代码。这里是:

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');  

【问题讨论】:

    标签: jquery ajax mobile-safari


    【解决方案1】:

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

    这类似于将您网站的版本放入所有脚本/css 文件的名称中,以便在更新后访问您网站的用户必须下载新文件。

    【讨论】:

    • 我之前试过了,刚才又试了一次,没有运气
    • @Mr.Gaga 没有代码,不幸的是,没有人能进一步帮助您。
    • 我添加了我的代码。我什至尝试将其更改为 GET 请求,但仅当我通过桌面链接访问移动 safari 页面时它仍会缓存....如果我通过其他应用程序内方法访问该页面(想想在 twitter 应用程序中打开一个页面)然后一切正常。我很困惑!
    猜你喜欢
    • 2011-03-04
    • 2011-02-23
    • 2014-05-18
    • 1970-01-01
    • 2012-05-13
    • 2013-04-03
    • 2011-08-02
    • 2017-05-28
    相关资源
    最近更新 更多