0

我有一个带有级联下拉列表的页面(一个下拉列表的可用选项取决于另一个下拉列表的选择)。我是一个 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 应用程序,以防万一有一种简单的方法可以在 Rails 中处理这个问题,太棒了。如果没有,任何好的 ol' HTML/jQuery 技巧将不胜感激。

4

2 回答 2

0

在浏览器中点击后退按钮相当于页面刷新,所以很明显你的 HTML 将默认为正常状态。

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

于 2012-09-27T22:40:34.647 回答
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事件

于 2012-09-27T22:44:39.807 回答