2015-07-03 89 views
0

當我從瀏覽器中點擊back button時,它顯示數據庫中的過期值。我嘗試使用下面的代碼,但它不工作爲什麼這個JavaScript不能在rails中工作?

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("I am an alert box!"); 
    }); 
</script> 

如何刷新頁面或獲得更新的值當用戶點擊瀏覽器的背面按鈕?

+0

這個職位應該有所幫助: http://stackoverflow.com/questions/25806608/how-to-detect-browser-back-button-event-cross-browser –

+1

看看history.js: https://github.com/browserstate/history.js/ – ReZa

+0

AFAIK:通常,瀏覽器後退和前進按鈕刷新頁面(它從服務器下載新版本的內容),除非你的新數據被注入dom(通過ajax )在頁面加載後。在這種情況下,您可以操作瀏覽器歷史堆棧(通過history.js),並控制自己在返回按鈕單擊時檢索哪些數據(再次使用相同的AJAX)。我認爲上面的代碼是不夠的。 –

回答

0

集成jquery和代碼沒有問題。 Rails項目自帶TurboLink,與jquery有一些衝突。可能的解決方案之一是從項目中刪除turbolink(將其從application.rb中刪除)並使用Jquery-Turbolink

這將允許使用jquery內置功能,就像我在我的問題。

請更新答案或爲其他可能的解決方案添加註釋。

0

使用散列值來確定它是否已經被刷新,以確保它發生一次:

window.onload = function() { 
    if(!window.location.hash) { 
     window.location = window.location + '#loaded'; 
     window.location.reload(); 
    } 
} 
+0

問題是'onload'函數不能在點擊後退按鈕上 –

+0

是的,已經做了 –

+0

你使用的是什麼版本的jQuery? – oMiKeY

1

Asp.Net Web表單:

在頁面加載(或)如果你想所有的頁面再穿上母版頁加載

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

Asp.Net MVC:

添加在行動或

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)] 

或者

如果你想對所有的意見禁用緩存此屬性控制器然後添加下面的過濾配置

filters.Add(new OutputCacheAttribute{VaryByParam = "*",Duration = 0,NoStore = true}); 

編輯:我注意到,你在評論中提到你在軌道上使用紅寶石。我不熟悉這一點,但邏輯是服務器需要發送一個頭到瀏覽器「不要緩存該頁面」。所以你可以在這裏找到一些答案Ruby on Rails: Clear a cached page

相關問題