Ajax和浏览器缓存问题

时间:2011-11-24 06:18:39

标签: ajax sinatra

我在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更新内容时,该页面的浏览器缓存会更新,并且只显示提取的代码段,并且所有headbody代码都已消失。页面继续呈现正常,直到您离开页面然后通过后退按钮返回,在这种情况下,显示的所有内容都是html片段,而不是页面的其余部分。

1 个答案:

答案 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)}
  });
}