根据 $_GET 值更改 div 内容
Posted
技术标签:
【中文标题】根据 $_GET 值更改 div 内容【英文标题】:change the div content based on the $_GET value 【发布时间】:2012-09-02 11:44:04 【问题描述】:我有一个主 php 文件,其中有一个“导航栏”,其中包含指向各个页面的链接,单击“导航栏”项目时,我希望将 div 的内容替换为相应的页面。
navbar.php:
<li id="nav-home"><a class="button" href="main.php">Home</a></li>
<li id="nav-attn"><a class="button" href="?nav=page1.php">Page1</a></li>
<li id="nav-tran"><a class="button" href="?nav=page2.php">Page2</a></li>
<li id="nav-mr"><a class="button" href="?nav=page3.php">Page3</a></li>
main.php:
<script>
$(document).ready(function()
$('#content').load('<?php echo $_GET['nav'] ?>');
);
</script>
使用此代码,我期望在单击导航栏项目时,div 内容必须更改为相应的页面引用。 我发现,例如,当我单击 page1 时,我的 url 被更改为 main?nav=page1.php,但根本没有触发更改 div 内容的脚本。 请纠正我,但我不想将链接更改为“#”。
【问题讨论】:
你有一个巨大的XSS security hole 在那里,跟随一个链接到一个新页面只是使用Ajax 加载所有内容是相当没有意义的(而且效率低下且搜索引擎不友好)。只需将内容包含在 PHP 中即可。 我也想说同样的话,直接用 AJAX 或 PHP 包含内容,但不要使用这种无效的方式 如果我输入 urlhttp://example.com/main.php?nav=main.php
?? :))
只是一个建议:您可以为此使用 twitter bootstrap..因为它具有这种事情的内置功能,它使生活更轻松..更好的是您可以尝试使用主干.js ..:)
【参考方案1】:
<script>
$(document).ready(function()
$('uL#navbar a').click(function(e)
e.preventDefault();
$('#content').load($(this).attr('href'));
);
);
</script>
【讨论】:
【参考方案2】:你可以试试这个
$(document).ready(function()
$('ul li a.button').on('click', function(e)
e.preventDefault();
$('#content').load($(this).attr('href'));
);
);
【讨论】:
【参考方案3】:你需要使用 AJAX 来实现它
<script>
$(function()
$('.button').on('click', function(e)
e.preventDefault();
$('#content').load($(this).attr('href'));
);
)
</script>
<li id="nav-home"><a class="button" href="main.php">Home</a></li>
<li id="nav-attn"><a class="button" href="?nav=page1.php">Page1</a></li>
<li id="nav-tran"><a class="button" href="?nav=page2.php">Page2</a></li>
<li id="nav-mr"><a class="button" href="?nav=page3.php">Page3</a></li>
<div id="content"></div>
【讨论】:
1) 一样吗? 2)为什么你添加了与谢赫相同的答案? 3) 试着理解,打字、测试和提交通常需要时间。 1) 是的,它是一样的 2) skheik 在我之后添加了答案 3) 什么测试:D 没有冒犯,但 IMO 没有必要重复答案 在这里,当我使用代码时,我的 url 没有改变,并且 div 替换为相同的页面内容,但是在新的 div 中,我有一个表单,操作应该让我保持在同一个页面中。发生的事情是当我提交带有新 div 的表单时被重定向到 main.php,这是我不想要的。如何做到这一点?【参考方案4】:试试;
$(document).ready(function()
$('.button').on('click', function(e)
e.preventDefault();
$('#content').load($(this).attr('href'));
);
);
在您的 php 中,更改代码,使 echo 看起来像;
<li id="nav-attn"><a class="button" href="yourpage.php?nav=page1.php">Page1</a></li>
【讨论】:
以上是关于根据 $_GET 值更改 div 内容的主要内容,如果未能解决你的问题,请参考以下文章