【问题标题】:How to implement next/back function when using ajax call?使用ajax调用时如何实现next/back函数?
【发布时间】:2013-01-04 05:34:00
【问题描述】:

我正在开发一个显示交易记录列表(每页 10 条记录)的网站。

页面具有分页搜索功能,可以让用户查看具体的交易记录。(如日期范围、类型....最多10多个参数)

当用户单击任何内容(更改页面/搜索条件)时,将使用 ajax 调用来获取和显示事务而无需重新加载。

但是,假设用户单击下一页(ajax 调用)以查看 page2 并尝试单击浏览器后退按钮。该网站会将他重定向到另一个网页,而不是返回到 page1。

我知道有一个 window.history.pushState 可以更改 url 而无需在 chrome/Firefox 的 html5 中重新加载。但我要支持旧版浏览器,例如 IE7+/FF/Chrome/Safari。

是否有任何现有的解决方案来解决这个问题?谢谢。


编辑: 今天中午我试过history.js。

// newUrl: "?para1=value1&para2=value2&....

history.pushState({data:"searchTransaction"}, document.title, newUrl);

并且在 ajax 请求之后 url 发生了变化。我有一个问题是如何处理更改事件。我想绑定 back/next(user click) 事件并获取“newUrl”,然后将其解析回参数映射并再次执行 ajax 请求。 如果可能的话,我想在 pushState 时存储整个参数数组。

【问题讨论】:

  • 试试https://github.com/balupton/History.js/ ?
  • @kayen - 打败我吧 :) 我在很多项目中都成功地使用了它。

标签: javascript jquery html


【解决方案1】:

很遗憾,您无法捕捉到“后退/下一个”事件,因为它不存在,但您可以捕捉到 statechange

// Bind to StateChange Event
History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
    var State = History.getState(); // Note: We are using History.getState() instead of event.state
    History.log(State.data, State.title, State.url);
});

我通常做的是捕捉用户的点击,如果没有点击就触发了状态更改,我假设用户下一步或返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 2012-10-14
    • 2011-09-30
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2013-10-26
    相关资源
    最近更新 更多