用户单击后退轨道时不会出现动态创建的内容

时间:2012-09-27 22:37:14

标签: jquery html ruby-on-rails ajax

我有一个带有级联下拉列表的页面(一个下拉列表的可用选项由另一个下拉列表的选择决定)。我是一个填充第二个选择的ajax调用:

$.ajax({
    url: "/sport_types/"+$(this).val()+"/leagues"
    dataType: "json"
    success: (data) ->
      $(".league_selector option").remove()
      row = "<option value=\"\">Choose a League...</option>"
      $(".league_selector").append(row)
      $.each data, (i, j) ->
        row = "<option value=\"" + j.id + "\">" + j.league_name + "</option>"
        $(".league_selector").append(row)
  })

这很好用,但如果用户点击浏览器上的后退按钮,则不会加载此动态生成的内容。

我正在运行一个rails应用程序,以防万一有一个简单的方法来处理这个轨道,真棒。如果没有,那么任何好的HTML / jQuery技巧都会受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

点击浏览器中的后退按钮相当于页面刷新,因此显然HTML将默认为正常状态。

如果您希望这种方法起作用,您必须将数据存储在cookie或会话中,并在刷新时填充..

答案 1 :(得分:0)

如果单击后退按钮,则不是所有浏览器都刷新一个。其中一些从现金中获取一个,所以如果你添加这个代码将是有用的。如果您更改了哈希,则需要下载“源”

var hash = location.hash;

setInterval(function()
{
    if (location.hash != hash)
    {
        alert("Changed from " + hash + " to " + location.hash);
        hash = location.hash;
    }
}, 100);

您可以使用历史记录插件jquery-history

关注jQuery.fn.hashchange事件