【问题标题】:Ajax dynamic navigationAjax 动态导航
【发布时间】:2014-01-20 00:53:44
【问题描述】:

大家好,新年快乐:)

我不是 Ajax 的老大,我有一个小问题我无法解决。

我有一个包含 ajax 动态导航的页面,我有多个可以加载的 php 文件。

这是我在此页面中的导航

<section id="sub-nav">
    <div class="container-fluid">
        <ul>
            <li><a href="#" class="little-button" id="ajax-media">Media</a></li>
            <li><a href="#" class="little-button" id="ajax-business">Business</a></li>
            <li><a href="#" class="little-button" id="ajax-events">Events</a></li>
            <li><a href="#" class="little-button" id="ajax-music-business">Music Business</a></li>
            <li><a href="#" class="little-button" id="ajax-institutions">Institutions</a></li>
        </ul>
    </div>
</section>

每个按钮都像这样调用一个页面

$('#ajax-media').click(function(){
    event.preventDefault();
    $('#solution-wrapper').fadeOut('slow', function(){
      $('#solution-wrapper').load('../solution-media.php', function(){
        $(this).fadeIn('slow');
      });
    });
  });

我想在更改内容时重写 url,并且我想在浏览器中解析 url 时直接访问内容。

你们能否帮助我开始一个完美的新年,而我的代码中没有太多问题? 我该怎么做这些事情? 非常感谢:)

【问题讨论】:

  • 如果这是出于 SEO 原因,我建议先让它在没有 ajax 的情况下工作(例如,导航中的常规链接),然后创建 javascript 来接管点击(不显眼的 javascript)
  • Reinder 是对的。您可以做的是拥有一个包含所有内容的文件,并为每个部分设置一个锚点,这样它也会自动将您带到该部分
  • 是的,在单个文件中会更容易,但对于 SEO,我认为在多个页面中会更好。如果没有 Ajax,我不知道如何动态加载页面

标签: ajax dynamic navigation load


【解决方案1】:

新年快乐

当你说重写 url 你想要什么样的格式?例子:你想让它说http://example.com/solution-media.php吗?

使用 #so example.com/index.php#media 最简单,其中 index.php 是容器网站。

如果您愿意,您可以在服务器端重写 url 以摆脱 index.php,然后您将获得 /media(使用内置于任何现代事物中的 html5 历史 API)

#示例如下

$('#ajax-media').click(function(){
    event.preventDefault();
    $('#solution-wrapper').fadeOut('slow', function(){
      $('#solution-wrapper').load('../solution-media.php', function(){

   $(this).fadeIn('slow');
   window.location.hash = 'media'; // This is the line that gives you the #
      });
    });
  });

让我知道这是否有意义

如果您希望能够粘贴 url 并加载该部分,这里有一个关于如何完成的粗略想法(在我的脑海中)

$(document).ready(function() {
var section = window.location.hash;

if (section) {
$('#ajax-'+section).trigger('click')
}

});

【讨论】:

  • 这不会处理第二个要求,即“当我在浏览器中解析 url 时直接访问内容”...
  • 是的,你是对的。为此,他需要在加载时获取#part 并触发适当的ajax 调用。只是想确保我们在同一页面上。因为如果他想要显示大的 php url,那么他仍然会重新加载。
  • 感谢您的回答。我已经尝试过使用 window.location.hash 但如果我解析此 URL,我将无法访问它。此外,我的主页上有一个带有不同链接的导航,我想通过单击此页面上的链接直接访问正确的内容。
  • 你是什么意思如果你解析URL就不能访问它。对于第二部分,请参阅我的编辑,可以完全支持转到该部分。我过去做过。让我整理一个简单的演示
  • 对不起,我的意思是“粘贴”网址。这样,URL 将会改变,但是,例如,如果我为您提供内容“mypage.html/content2.php”的正确 URL,您将到达“mypage.html”。我希望当我将 URL 提供给某人时,可以直接看到内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 2014-05-31
  • 2012-11-01
相关资源
最近更新 更多