0

ここには非常に単純な解決策があると確信していますが、最善のアプローチを考えることはできないようです。HistoryAPIを利用したHistory.jsを使用しています。次のページから始めましょう。

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

私がAJAX呼び出しを処理してきた方法は、#contentのコンテンツを新しいhtmlに置き換えることです。たとえば、「コンテンツ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);

これを処理する適切な方法に関するアイデアはありますか?

4

1 に答える 1

2
<?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
    }

?>
于 2012-04-06T19:01:04.370 に答える