我在Sinatra上运行了一个小网站,它在xhr请求中通过ajax更新内容。
的javascript
function get_shows() {
$.ajax({
type: 'GET',
dataType: 'HTML',
url: '/update/',
success: function(data) {
$('#show_list').fadeOut('fast', function(){
$(this).html(data).fadeIn('fast');
});
},
error:function(data){console.log(data.statusText)}
});
}
红宝石
get '/update/' do
if request.xhr?
erb :index_show_list, :layout => false
else
erb :index
end
end
我遇到的问题是,当用户通过ajax更新内容时,该页面的浏览器缓存会更新,并且只显示提取的代码段,并且所有head
和body
代码都已消失。页面继续呈现正常,直到您离开页面然后通过后退按钮返回,在这种情况下,显示的所有内容都是html片段,而不是页面的其余部分。
答案 0 :(得分:1)
我遇到过同样的问题。尝试在ajax请求中将缓存设置为false。默认情况下,它设置为true。
有关详细信息,请参阅http://api.jquery.com/jQuery.ajax/。
示例:
function get_shows() {
$.ajax({
type: 'GET',
cache: false,
dataType: 'HTML',
url: '/update/',
success: function(data) {
$('#show_list').fadeOut('fast', function(){
$(this).html(data).fadeIn('fast');
});
},
error:function(data){console.log(data.statusText)}
});
}