我有一个单页网页应用程序,允许用户输入流派,日期范围和其他一组输入。
现在我读取所有这些输入并向服务器发出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总是相同的。
你们有没有人遇到这种情况?
答案 0 :(得分:1)
您必须实现一个侦听hashchange事件的路由器。例如,如果你有一个使用AJAX将内容从A更改为B的链接,然后返回按钮会将内容从B更改回A,则流程将跟随:
localhost:8080/MyImdb#index
(例如)#example
localhost:8080/MyImdb#example
localhost:8080/MyImdb#index
所以不要点击链接做其他事情而不是更改哈希。路由器处理内容更改。 Dojo似乎对这种东西有所支持。我没有尝试过,但演示似乎很有希望:http://dojotoolkit.org/documentation/tutorials/1.9/hash/。 jQuery似乎也为此制作了插件。可在此处找到一个:https://github.com/Emberex/hashrouter
我希望这会有所帮助。