3

页面 A:

$(document).ready(function () {
    bindData();
});

function bindData() {
    $('#searchbtn').bind('click', function () { SearchResult(); });
}
function SearchResult() {
 ajax call...
}

页面 A HTML:

<input type="button" id="searchbtn" />

页面 B 详细信息---> 从页面 A 搜索列表中选择特定搜索结果后出现此页面

    <a href="javascript:history.back();">Back</a><br />

现在,当我返回页面时,AI 可以看到我的搜索条件被选中,但结果 Div 消失了。我想要做的是我希望在页面返回时保留搜索列表。我认为我可以在这里做的是如何在页面返回时再次调用 searchbtn click 事件,以便列表再次出现。谁能告诉我如何仅在页面从页面 B 返回时触发 searchbtn 点击事件。或者指出我这样做的正确方式.. 谢谢

4

3 回答 3

1

浏览器后退按钮长期以来一直是 AJAX 的问题。那里有脚本、解决方法和技术(取决于您要使用的框架)。

由于您似乎正在使用 jQuery(基于您发布的 JavaScript 语法),这里是另一个Stackoverflow 帖子的链接,该帖子关于后退按钮 jQuery 插件

于 2012-12-06T18:42:51.710 回答
1

history.back()将返回到最后访问的 URL,这意味着在用户访问期间进行的任何 ajax 调用都不会自动重复。您的浏览器可能会自动恢复您的表单选择,但该SearchResults()功能仅由click事件调用,而不是选择事件。

您可以使用sammy.js 之类的框架将 URL 绑定到 ajax 状态。这样,history.back()会将您带到与SearchResults().

于 2012-12-06T18:43:17.997 回答
0
    function bindData() {
    var chkinput1 = $("input:checkbox[name=x]:checked").length;
    var chkinput2 = $("input:checkbox[name=y]:checked").length;

    if (chkinput1 > 0 && chkinput2 > 0) {
       SearchResult();
     }
    $('#searchbtn').bind('click', function () { SearchResult(); });
    }

我知道这是实现此结果的最糟糕的方法,但我认为与其使用任何其他插件来增加复杂性,我们现在将采用此方法。如果其他人正在寻找相同的问题,让我再次告诉您,这不是最佳实践,因为在返回历史记录时,我们将再次调用搜索结果,具体取决于复选框的缓存输入选择并再次生成整个 ajax 调用显示列表。在第一个请求中,我正在缓存列表并设置滑动到期,因此它不需要任何时间来恢复,所以每个人都过得愉快。

于 2012-12-07T17:47:48.640 回答