1

重複の可能性:
githubソースブラウズでAJAXはどのように実行されますか?

現時点では、リンクにdivと次のコードがあります。

<a href="#" onclick="$('div#content').load('Admin/users.php');" id="admin-panel-icon"></a>

基本的には、ファイルusers.phpをindex.phpページにあるdivコンテンツにロードするだけです。URLバーでは、href = "#"から取得したindex.phpの後に#が追加されます。

リンクが次のようになるように作成しました。

<a href="#AdminUsers" onclick="$('div#content').load('Admin/users.php');" id="admin-panel-icon">

しかし、今ではブックマークとページの更新の問題があります。ユーザーがindex.php#AdminUsersにアクセスしたときに、users.phpファイルのコンテンツをdiv #Contentsにロードするようにするにはどうすればよいですか?

私がやっていることには、おそらくもっと良い解決策があると思います。理想的には、人々が/Admin/users.phpにアクセスしてハッシュタグを持たないようにしたいのですが、users.phpのコンテンツのみをロードしながら、これをどのように行うのかわかりません。 ?

4

3 に答える 3

1

次を使用できます。

<a href="#AdminUsers" [...]>

お役に立てば幸いです。

編集:ロード時にハッシュでサイトをロードできます:

window.onload = function() {
  var l_hash = location.hash;
  if(l_hash.length>1) {
   var pagename = location.hash.substr(1);
   //do something with the pagename, e.g.:
    if(pagename=="AdminPage") {
      $('div#content').load('Admin/users.php');
    }
  }
}
于 2012-10-22T15:40:18.010 に答える
1

URLにハッシュがある場合は、onLoad($(document).ready())を確認する必要があります。その場合、jQueryは指定されたコンテンツをロードする必要があります。ただし、何らかの方法で「#AdminUsers」を「Admin/users.php」にリンクする必要があります。そのために非表示の入力を使用することをお勧めします。

まず、ajaxコンテンツをロードする関数を作成します(リンク上で直接ロードするのではなく)

function loadContent(page){
    $('div#content').load(page);
}

そしてあなたのリンクで:

<a href="#AdminUsers" onclick="loadContent('Admin/users.php');" id="admin-panel-icon" ></a>

そしてどこかで、すべてのページで:

<input type="hidden" name="AdminUsers" id="AdminUsers" value="Admin/users.php" />

hrefにカスタムハッシュ(AdminUsers)を入れていることに注意してください。したがって、ユーザーがそれをクリックすると、URLに目的のハッシュが配置されます。

そして最後に、ロード時にハッシュをチェックする関数:

$(document).ready(function(){
    if(window.location.hash){
        var hash = window.location.hash;
        $target = $('#'+hash.slice(1));
        if ($target.length) {//found the hidden input field with your URL
            loadContent($target.val());
        }
    }
});

直接アクセスしたときにページ全体を表示する場合は、次のようにします。(PHPの場合):

<?php if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) ||
 strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest'): //not ajax -> display header ?>
<div id="header">
   <!-- header content -->
</div>
<?php endif; ?>
于 2012-10-22T15:53:44.640 に答える
0

jQueryhashchangeプラグインを使用できます。http://benalman.com/projects/jquery-hashchange-plugin/をご覧ください

于 2012-10-22T15:42:07.087 に答える