【问题标题】:Tabbing in PHP?在 PHP 中跳转?
【发布时间】:2009-11-04 04:28:17
【问题描述】:

我的页面上有这些标签

Equ |税务 |平衡 |债务 |基金 | ETF |镀金.......

然后在这些选项卡下方有空间。当用户单击这些选项卡时,必须在该空间中显示与这些选项卡对应的数据,而无需更改页面的 url。就像当我单击 Equ 时,其数据将显示在该空间中,如果我单击税则其数据将显示在相同的空间中,就好像它已经覆盖了以前的数据一样。必须显示的数据是使用 php 计算的。 现在使用 php 或 javascript 最简单的方法是什么???

这里将不胜感激一些编码帮助。

编辑: 看到我知道这可以使用 javascript 来完成,但是必须显示的数据在 php 变量中。现在如何将 php 变量分配给 javascript????

<script type="text/javascript">
function showhide(ref)
{
    document.getElementById('mf').innerHTML= HERE I WANT A PHP VARIABLE;
}
</script>

如何在 onclick 事件中发送我的 pfp 变量,以便它们可以在函数中使用???

【问题讨论】:

  • 你试过什么?如果没有大量额外信息,几乎不可能为此提供代码。
  • 通过查看您的问题和随后的 cmets,我觉得您对 PHP 和 javascript 如何交互(即它们不交互)存在普遍误解。一旦页面显示出来,PHP 就完成了所有的工作。更改 PHP 显示内容的唯一方法是向服务器发出新的 HTTP 请求(即请求 URL)。 Javascript(使用 AJAX)允许您隐藏该请求并使用新信息更新页面,但我个人会使用下面给出的 CSS/javascript 选项之一,并简单地显示/隐藏 PHP 生成的每一位.

标签: php javascript tabs


【解决方案1】:

您可以使用 CSS 或/和 Javascript 来帮助您解决问题。

仅使用 CSS 的选项卡示例:

http://edeverett.co.uk/experiments/css_only_tabs.html

使用 Javascript 的选项卡示例:

http://jqueryui.com/demos/tabs/

编辑 作为对您的编辑的回复:

编辑:我知道这可以使用 javascript 来完成,但必须显示的数据在 php 变量中。现在如何将 php 变量分配给 javascript????

要在服务器端同步执行所有操作,您可以将计算结果注入您的 javascript:

function showhide(ref)
{
    document.getElementById('mf').innerHTML= '<?php echo $variable; ?>';
}

更好的做法是使用 AJAX。

【讨论】:

  • 我看到了一些令人发指的罪行,PHP 正在编写 javascript 正在编写 html。它真的让事情变得过于复杂,最终你的 html 文档中都包含了内容。
  • 我完全同意你的看法@MalphasWats,这就像意大利面条代码一样具有另一个维度。我将它作为一个可行的解决方案提供,这可能正是@developer 正在寻找的。我也在寻找替代方法将服务器端计算的值放入 javascript 中而无需异步请求调用。
【解决方案2】:

其实很简单。您不需要在标签点击时动态加载数据。您可以在页面加载时一次性加载所有数据,然后根据需要显示/隐藏。

一个简单的例子...

<ul id="#nav">
<li><a href="#" id="equ-tab">equ</a></li>
<li><a href="#" id="tax-tab">tax</a></li>
<li><a href="#" id="bal-tab">balanced</a></li>
</ul>

<div id="content">
    <div id="content-equ">equ content</div>
    <div id="content-tax">tax content</div>
    <div id="content-bal">balanced content</div>
</div>

假设 equ 是默认内容。当页面加载时隐藏除 equ 之外的所有其他 div(使用 css 或最好是 javascript)

在单击选项卡时使用 javascript(推荐使用 jquery)隐藏所有内容,然后显示该选项卡内容。

$('#nav a').click(function(){ // when a nav link is clicked
    $('#content div').hide(); // hide all content
    $('#content #content-'+$(this).attr('id')).show(); // show content that has id #content-<tabID>
});

代码不是复制粘贴的,我是快速打出来的例子

【讨论】:

  • 这就是我所知道的,但我已经编辑了我的问题,请看。
  • 我没有看到任何改变我的答案的东西 =)
  • 就个人而言,我认为这是最好的方法,只要您在每个选项卡中只有少量信息。一旦您开始在每个选项卡中获取页面和内容页面,您的页面加载时间就会变得疯狂,您最好使用基于 AJAX 的方法来获取每次实际需要显示的位。
【解决方案3】:

你必须使用ajax

您可以使用一些库,例如 xajax、mootools 或 jquery。

更新: mootools 示例: 首先创建单独的 php 文件,根据 tab(createContent.php) 返回文本 然后在javascript中:

function menuClick(var i)
{
    var request1 = new Request.HTML({ url: 'createContent.php?i='+i,
        onSuccess: function(html) {
            $('div1').set('text', '');
            $('div1').adopt(html);
            $('div1').innerHTML = '';
        },
        onFailure: function() {
            $('div1').set('text', '');
            $('div1').innerHTML = '';
        }
    });

    request1.send();
    return false;
}

在 html 中为具有该功能的选项卡添加 onclick:

<a href="#" onclick="return menuClick(1);">EQU</a>

【讨论】:

  • 你真的不需要 ajax。您可以在页面加载时加载所有内容,然后让选项卡适当地显示/隐藏内容。在这种情况下不需要 ajax。
  • ajax 不会让我的数据显示在其源中,而我需要在其源中显示数据:-(
【解决方案4】:

显示行为将是客户端的事情,因为它是发生在浏览器上的事情(某些逻辑)。如前所述,您必须使用 javascript/css 来执行此操作。

在编码帮助方面,您可能会发现这很有帮助: http://stilbuero.de/jquery/tabs_3/

编辑

所以,如果你想把一个 php 变量放在那里,这就是你要做的,并把它变成一个“.php”页面:

<script type="text/javascript">
function showhide(ref)
{
    document.getElementById('mf').innerHTML= <?php echo $VAR ?>;
}
</script>

当然,这假设您在呈现页面之前计算了变量。如果变量的值取决于页面上的某些操作(例如,在文本框中输入一些文本并单击按钮后 - 就像搜索框),您将不得不为此使用 AJAX。您可以通过对 php 页面执行 POST 请求的 GET 请求,然后显示该页面的内容来做到这一点。我在上面发布的链接有一个 AJAX 选项卡的示例,你可以看看。

【讨论】:

  • 我知道这可以使用 javascript 来完成,但是必须显示的数据在 php 变量中。现在如何将 php 变量分配给 javascript????
  • @developer:我已经更新了我的答案以回答您编辑的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多