Ajax在History' onpopsate'上加载整个页面。

时间:2014-09-29 23:05:41

标签: jquery browser-history html5-history

我用它来创建一个新状态:

//state 1
        history.pushState({ reload: true }, 'submodulo', '?submodulo=1');
//state2
        history.pushState({ reload: true }, 'submodulo', '?submodulo=2');
//state3
        history.pushState({ reload: true }, 'submodulo', '?submodulo=3');

我想在用户按下后退按钮时重新加载内容。

window.onpopstate = function(event) {
          if (event.state !== null && event.state.reload) {

              location.reload(true);

            }               
    };

但是,这样,我将失去状态。这就像点击一个完整的新网址。它没有保持序列。是否有其他方式加载整个页面,但是采用ajax方式?

1 个答案:

答案 0 :(得分:0)

您需要运行ajax调用,而不是在popstate事件上重新加载页面。

window.onpopstate = function(event) {
   if (event.state !== null && event.state.reload) {
              $.ajax({
                url: 'load-content.php',
                success: function( response ) {
                     $('#main-content').replaceWith( response );      
                  }
              });
   }               
};

在目标PHP文件中,根据网址或给定参数加载内容,并在成功时将内容替换为生成的内容。