0

我认为这真的很简单,但显然经过几天的试验并没有成功,我不得不请人帮忙,到处找。

对,我基本上是在没有太多指导的基础上创建一个 php 模板,它是一个响应式框架。现在这个框架是相当基本的,所以要添加页面转换,我必须使用 jquery 来执行我认为是 ajax 调用,以从另一个页面获取“内容”并将其显示在模板页面 index.html 上

我目前正在使用以下

 <script>
 $(document).ready(function() {
 $('nav.top-bar > section.top-bar-section > ul.right > li > a').click(function()    {

    var toLoad = $(this).attr('href')+' #content';
        $('#content').hide(1000,loadContent);
        $('#load').remove();
        $('#main_wrapper').append('<span id="load">LOADING...</span>');
        $('#load').fadeIn('fast');
                window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-0);
        function loadContent() {
        $('#content').load(toLoad,showNewContent);
        }
        function showNewContent() {
        $('#content').show(1000,hideLoader);
        }
        function hideLoader() {
        $('#load').fadeOut('fast');

        }
return false;

        }); 
  });
  </script>

现在,在我改用 ajax 和 jquery 之前,我正在操作菜单“活动”类和页面名称,在第一行的每个页面上设置一个简单的变量,列为$page='' 然后是页面名称

现在我用 ajax 加载内容,即使我在新页面的内容中包含这个变量,它也不会在菜单标题或菜单标题中更新

我很抱歉我写的东西不正确我是这个论坛的新手

提前感谢您的帮助:) 我更喜欢有人解释我需要做什么以及如何去做,而不是像我学习者一样复制和粘贴代码:)

4

3 回答 3

0

由于极度混乱,我只能回答您问题的一部分,所以:

首先,这就是您的网址更改的原因:

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-0);

您正在使用该行对其进行修改。然而,这条线有一个有趣的小怪癖:

attr('href').length-0

在最后。为什么是-0?那没有什么区别。我会清理它。

除此之外,我对你的要求感到非常困惑,所以让我试着改写一下,你可以告诉我我错过了什么。

您希望用户单击导航链接,并使用 jQuery 通过 AJAX 调用加载该链接的内容,然后将页面上的内容替换为新加载的页面,对吗?

当您说“在顶部主页上我有变量 $page = 然后是页面名称”时,“主页”是什么意思?你的意思是它是 HTML 中的一行文本?您未在此处包含的脚本的一部分?您的 PHP 代码的一部分?

然后您说“我尝试将标签包含在与上述内容一起更改的 div 中” - 什么是“标签”?

通过阅读这 4 或 5 次,我几乎无法辨别上述对您要做什么的理解。

请对您的问题进行大量编辑 - 这非常难以理解。

最后,您为什么要尝试替换用户单击链接并加载内容的浏览器功能?这就是浏览器的用途。浏览器还方便地在 url 栏中通常(或其某种形式)有一个加载指示器,让用户知道内容仍在加载。

于 2013-06-22T21:27:57.250 回答
0
function loadContent() {
    $('#content').load(toLoad,showNewContent);
}

所以首先,查看加载方法的 jQuery 文档:http: //api.jquery.com/load/

您的问题是它需要三个参数,而您传递了两个参数。如果列出了多个参数并且您只想传递其中一些参数,您仍然需要为要“跳过”的参数提供一个空值。尝试将您的呼叫更改为:

function loadContent() {
    $('#content').load(toLoad, null, showNewContent);
}

你会注意到我传递的是“null”。如果这不起作用,请传递一个空字符串,如下所示:

function loadContent() {
    $('#content').load(toLoad, "", showNewContent);
}

第二个参数是与请求一起传递的数据。这是您列为回调的第三个参数,据我所知,这是您犯错的地方。

于 2013-06-23T02:10:51.750 回答
0

You probably want to load the page and parse the result in jQuery to get the new page’s <title> tag and set the requesting page’s <title> tag.

The only thing I’d ask is: why are you doing this? Are you just wanting AJAX page navigation in your website instead of the traditional propagating navigation?

于 2013-06-22T21:21:02.050 回答