2013-02-06 59 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應用中打開頁面)那麼一切正常。我很困惑! –

相關問題