javascript - 使用 History API 时,我应该如何处理返回到加载的初始页面

标签 javascript ajax api history.js

我很确定这里有一个非常简单的解决方案,但我似乎想不出最好的方法。我正在使用 History.js,它利用 History API。假设我从以下页面开始:

<div ="header">
  Header
</div>
<div id="content">
  Content
</div>
<div id="footer">
  Footer
</div>

我处理 AJAX 调用的方式是用新的 html 替换 #content 的内容。例如,我加载了“内容 2”的文本。这一切都很好,直到用户导航回到他们在我的网站上点击的第一页,因为它尝试加载完整的第一页(其中包括#header和#footer,所以我最终得到:

<div ="header">
  Header
</div>
<div id="content">
  <div ="header">
    Header
  </div>
  <div id="content">
    Content
  </div>
  <div id="footer">
    Footer
  </div>
</div>
<div id="footer">
  Footer
</div>

我知道有一种更好的方法来构建我的页面来避免这个问题,但我似乎不知道它是什么。这是我正在使用的代码:

(function(window,undefined){
    var
    History = window.History,
    State = History.getState();

    History.Adapter.bind(window,'statechange',function(){
    var State = History.getState();
    $.ajax({
        url: History.getState().url,
        cache: false
    }).done(function( html ) {
        $("#content").html(html);
    });
    });
})(window);

关于处理这个问题的正确方法有什么想法吗?

最佳答案

<?php

    $is_ajax = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' );

    if ( $is_ajax ) {
      // Give the content
    } else {
      // Give a full page
    }

?>

关于javascript - 使用 History API 时,我应该如何处理返回到加载的初始页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047470/

相关文章:

jquery - 使用 AJAX、Spring MVC、MySQL 更新表

ruby-on-rails - 使用 Devise 的 RoR 中的 session 超时消息

angular - 使用 API 的 Ionic 3 登录身份验证 - 无法读取 null 的属性 'json'

azure - 每小时对 API 进行 REST 调用并将结果保存到 Azure SQL

javascript - Twitter Bootstrap 顶部菜单未知组件向下滑动

javascript - map 未第二次渲染或第二次在其他页面上渲染 ionic 1

javascript - 如何在 JavaScript 中打开文件夹对话框

javascript - 如何清除 session cookie

php - 序列化形式 Symfony2 上的 json_decode

api - 带有 API 的 Windows Server 2008 防病毒软件