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

You can use:

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

Hope that helps.

Edit: You can load the site in hash on load:

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

你可以使用 jQuery hashchange 插件看看这里http://benalman.com/projects/jquery-hashchange-plugin/

于 2012-10-22T15:42:07.087 回答