2010-01-10 85 views
6

我的網站有點問題。我有一個託管谷歌地圖的頁面。但是,地圖不會顯示,直到用戶單擊按鈕。然後調用$ .getJSON來獲取我需要在地圖上顯示的地址...

$.getJSON(theurl, function(json) { 
    ... 
} 

這一切正常。但是,如果用戶然後移動到不同的頁面,然後單擊後退按鈕,他們將顯示來自$ .getJSON調用的數據,而不是頁面本身。

就好像呼叫獲取地址已成爲瀏覽記錄的一部分。如果用戶在數據出現時點擊刷新,則會顯示完整頁面。

誰能告訴我如何阻止這種情況的發生。

我在ASP.Net MVC網站中使用googlemap。

感謝

+0

「?」。您是否修改了瀏覽器的歷史記錄? – 2010-01-10 14:53:22

+0

您可以發佈演示嗎? – SLaks 2010-01-10 14:56:26

+1

url是否與頁面相同?(即根據請求是否被視爲xhr在html和json之間更改) – meandmycode 2010-01-10 18:48:02

回答

10

我解決它由包括剛纔的$就功能

$ .ajaxSetup({緩存:假})之前,下面的代碼;

它的工作原理!試試吧

+2

該調用將所有調用的行爲更改爲頁面上的ajax。這可能會導致一些非常混亂的行爲,如果你不知道它。 – Wheeyls 2012-09-16 22:33:51

4

這爲我工作,並很好地發揮使用Rails控制器:

$.getJSON(url, {format: 'json'}, successHandler); 

作爲獎勵,我得到保持高速緩存。

我敢肯定,這與cache: false的工作原理相同 - 都向該網址添加了一個參數,這樣Chrome就不會被原點弄糊塗了。在這種情況下,雖然我得到緩存結果,這是很好的。

3

這實際上是a bug in Chrome。我通過將附加內容附加到AJAX調用的URL來修復它,因此它與頁面URL不同(例如'& ajax = true')。

所以你的情況會是這樣的:

$.getJSON(theurl + '&ajax=true', function(json) { 
    ... 
} 

(當然,你需要檢查,什麼不能在查詢字符串,但是這說明了一點

+0

這對我無效 – 2016-06-29 18:00:22

+0

wheeyls回答爲我工作http://stackoverflow.com/a/12427812/1852292 – 2016-06-29 18:12:53