在ajax内容加载上更改php变量的值

时间:2013-06-22 21:10:20

标签: php jquery html ajax

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

正确的我基本上创建了一个php模板,没有太多关于基础4框架的指导,是一个响应式框架。现在这个框架是相当基本的,所以添加页面转换我必须使用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之前我正在操作菜单“active”类和页面名称,在第一行的每一页上设置了一个简单的变量,列为 $ page =''然后页面名称

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

我很抱歉我不能正确地写这个论坛的东西

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

3 个答案:

答案 0 :(得分:0)

您可能希望加载页面并在jQuery中解析结果以获取新页面的<title>标记并设置请求页面的<title>标记。

我唯一要问的是:你为什么要这样做?您是否只想在您的网站中使用AJAX页面导航而不是传统的传播导航?

答案 1 :(得分: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次,我几乎无法辨别出你正在尝试做什么的上述理解。

请对您进行重度编辑 - 这非常难以理解。

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

答案 2 :(得分:0)

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

首先,请查看加载方法的jQuery doc: http://api.jquery.com/load/

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

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

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

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

第二个参数是与请求一起传递的数据。这是你列出的回调的第三个论点,据我所知,这就是你犯错误的地方。