2015-04-22 69 views
1


我正在建设一个网站与Ajax导航,所以整个网站不需要加载每次用户希望看到另一个页面。首页,关于,新闻,联系等...WebSite Ajax导航无法正常工作时刷新/共享链接

我做了它,用url刷新,后退按钮,一切正常。
但我有以下问题。


Compartilhar /刷新:
当我刷新页面或与他人共享的链接,该网站无法正常加载。它只加载该网站的特定部分。示例:如果我共享链接mysite.com/about.php,它将仅加载该页面的文本,而不在主布局中包含页眉,页脚和其他常用元素。也没有css
同样的事情发生时,如果我刷新页面,当我在其他页面。

我试图关注此tutorial here,但它不加载任何东西。给我一个空白空间。

我下面的代码正在工作,但与我上面描述的问题。


jQuery代码:

$(document).ready(function() { 
    var content = $('#site'), 
     firstLink = $(".navbar li:first-child a").attr("href"), 
     navLink = $(".navbar li a"); 

    content.load(firstLink); //default load 

    navLink.on("click", function(event){ 
     event.preventDefault(); 
     event.stopImmediatePropagation(); 
     var newLink = $(this).attr("href"); 

     History.pushState(null, newLink, newLink); 

     $(".active").removeClass("active"); 
     $(this).addClass("active"); 
     content.load(newLink, function() { 
      FB.XFBML.parse(); 
     }); 

    }); 

    History.Adapter.bind(window, "statechange", function() { 
     $(".active").removeClass("active"); 
     $("a[href='" + History.getState().title + "']").addClass("active"); 
     content.load(document.location.href); 
    }); 
}); 

网站结构代码:

<head> 
    <script type="text/javascript" src="js/jquery.js"></script> 
    <link rel="stylesheet" type="text/css" href="css/main.css" /> 
</head> 
<body> 
    <header> 
     <!-- more code in here --> 
    </header> 
    <nav class="navbar"> 
     <div class="container"> 
      <ul> 
       <li><a class="active" href="/content/home.php">Home</a></li> 
       <li><a href="/content/services.php">Services</a></li> 
       <li><a href="/content/people.php">People</a></li> 
       <li><a href="/content/about.php">About us</a></li> 
       <li><a href="/content/news.php">News</a></li> 
       <li><a href="/content/contact.php">Contact</a></li> 
      </ul> 
     </div> 
    </nav> 
    <div id="site"></div> 
    <footer> 
     <!-- more code in here --> 
    </footer> 
    <script type="text/javascript" src="js/history.js"></script> 
    <script type="text/javascript" src="js/scripts.js"></script> 
</body> 

回答

0

Cookie的方式:

  • 创建一个会话过期的cookie。
  • 当有人请求一个页面,这个cookie只发送页面的一部分。

  • 如果当有人请求一个页面,没有这个cookie。设置会话cookie并发送所有索引页面+额外的内容。

实施例:

1.我请求services.php和小甜饼X

2.我要求services.php和没有cookie的X服务器将只发送services.php。服务器将发送的index.php和在index.php你可以和包括services.php像:

//some html 
if (!$_COOKIE["some_cookie_name"]) { 
    include_once("the_page.php"); 
} 
//more html 

3。如果我请求/服务器将只发送index.php

如果你从URL的参数做一个包含,请注意他们可以键入什么以及你如何操作。

的JavaScript(jQuery的)方式:

  • 第1步:入住PHP如果呼叫是一个正常的GET或AJAX GET(http://davidwalsh.name/detect-ajax)。你可以用多种方式来完成。
    • 如果调用是AJAX。服务页面的一部分。
    • 如果调用不是AJAX。服务的index.php
  • 第2步:包括在你的index.php一个JavaScript是检查URL的内容,然后检查特定的div喜欢的内容...:
    • 如果URL是services.php,div #yourdiv的内容为空 - >对services.php执行ajax调用。
    • 如果URL是/或div #yourdiv的内容不为空 - >什么也不做。

的JavaScript(jQuery的)+曲奇方式:

  • 步骤1.检查在PHP如果呼叫是一个正常的GET或AJAX GET(http://davidwalsh.name/detect-ajax)。你可以用多种方式来完成。
    • 如果调用是AJAX。服务页面的一部分。
    • 如果调用不是AJAX。服务index.php并设置一些cookie名称到你想要的页面(例如:services.php)。
  • 第2步:在你的index.php包括检查如果cookie你的存在之前创建(或没有),一个javascript ...:
    • 如果cookie存在 - >做一个AJAX调用url中的cookie值&删除cookie。
    • 如果cookie不存在 - >什么也不做。

希望它可以帮助

+0

但与此我将不得不创建一个,如果每个页面?你知道是否有可能使用Ajax/jQuery吗?我不知道那么多的PHP。什么是'some_cookie'部分?谢谢 – celsomtrindade

+0

@CelsomTrindade我以另一种方式编辑帖子 – nada