如何使用ajax调用实现后退按钮

时间:2013-10-17 17:49:58

标签: javascript jquery ajax spring web-applications

我有一个单页网页应用程序,允许用户输入流派,日期范围和其他一组输入。

现在我读取所有这些输入并向服务器发出ajax post请求。服务器在java spring mvc上。

一切正常。现在我想创建一个后退功能。

因此,在进行几次搜索之后,如果用户想要回到之前的第4或第5次搜索,他应该能够做到这一点。

我看过history.back(-1)但它不适合这里。因为ajax调用不会更改url。我的网址始终是localhost:8080 / MyImdb

ajax调用如下:

xhr = $.ajax({
            type: 'POST',
            async: true,
            dataType: 'json',
            url: location.href + 'getResults',          
            data: ({date:dateRange, genre:genre, cast:cast }),

            success:function(json) {
                processData(json);
            },
            error: function(jqXHR, textStatus, errorThrown){
                var error = "jqXHR: " + jqXHR + "; ; ; ; status: " + textStatus + "; ; ; ; errorThrown: " + errorThrown;
                console.log(error);
            }
        }).done(function() {
            hideLoadingIndicator();
        });

我所拥有的一个想法是将所有发布数据放入对象中。并将这些对象保存在堆栈中。 现在创建一个后退按钮。当用户点击它时从堆栈中弹出对象并使用弹出的对象发出ajax post请求并平行更新前端的输入框

这是标准方式还是有一些库可以做到这一点。

我查看了jquery历史插件和hashchange事件,但我认为它们不适合我的上述情况,因为url总是相同的。

你们有没有人遇到这种情况?

1 个答案:

答案 0 :(得分:1)

您必须实现一个侦听hashchange事件的路由器。例如,如果你有一个使用AJAX将内容从A更改为B的链接,然后返回按钮会将内容从B更改回A,则流程将跟随:

  1. 当前网址为localhost:8080/MyImdb#index(例如)
  2. 用户点击包含href #example
  3. 的链接
  4. 浏览器导航至localhost:8080/MyImdb#example
  5. 启动hashchange事件
  6. 路由器选择事件,对其进行分析并将内容从A更改为B
  7. 用户点击后退按钮
  8. 浏览器导航至localhost:8080/MyImdb#index
  9. 启动hashchange事件
  10. 路由器选择事件,对其进行分析并将内容从B更改为A
  11. 所以不要点击链接做其他事情而不是更改哈希。路由器处理内容更改。 Dojo似乎对这种东西有所支持。我没有尝试过,但演示似乎很有希望:http://dojotoolkit.org/documentation/tutorials/1.9/hash/。 jQuery似乎也为此制作了插件。可在此处找到一个:https://github.com/Emberex/hashrouter

    我希望这会有所帮助。