$ .getJSON后退按钮显示JSON返回数据而不是页面
我的网站有点问题。 我有一个托管谷歌地图的页面。 但是,在用户单击按钮之前,地图不会显示。 然后调用$ .getJSON来获取我需要在地图上显示的地址……
$.getJSON(theurl, function(json) { ... }
一切正常。 但是,如果用户移动到另一个页面,然后单击“返回”按钮,则会显示$ .getJSON调用中的数据,而不是页面本身。
这就好像获取地址的调用已成为浏览历史记录的一部分。 如果用户在数据出现时点击刷新,则显示整页。
任何人都可以告诉我如何阻止这种情况发生。
我在ASP.Net MVC网站上使用googlemap。
谢谢
我通过在$ .ajax函数之前包含以下代码来解决它
$ .ajaxSetup({cache:false});
有用! 试试吧
这对我有用,并与Rails控制器很好地配合:
$.getJSON(url, {format: 'json'}, successHandler);
作为奖励,我得保留缓存。
我很确定这可行的原因与cache: false
相同 – 都会在url中添加一个参数,以便Chrome不会被原点混淆。 在这种情况下,虽然我得缓存结果,这很好。
这实际上是Chrome中的一个错误 。 我通过在AJAX调用的URL中附加内容来修复它,因此它与页面URL不同(例如’&ajax = true’)。
所以在你的情况下,它看起来像:
$.getJSON(theurl + '&ajax=true', function(json) { ... }
(当然,你需要检查’?’以及查询字符串中的内容,但这说明了这一点。