这是我index.php
页面的一个片段,我在这里显示一个包含三个HTML链接的菜单。
选择一个菜单项定义页面参数,然后加载PHP模板逻辑,填充到<div id="main">
。
<div class="span-24" id="menu">
<table>
<tr>
<td><a href="index.php?page=races">Races</a></td>
<td><a href="index.php?page=runners">Runners</a></td>
<td><a href="index.php?page=searchRunners">Search</a></td>
</tr>
</table>
<br/>
</div>
<!-- main content -->
<div class="span-24" id="main">
<?php
$MYROOT=$_SERVER['DOCUMENT_ROOT'];
if(isset($_GET['page']))
{
$page=$_GET['page'];
@ require_once($MYROOT."/$page.php");
}
else
{
@ require_once($MYROOT."/races.php");
}
?>
</div>
此解决方案工作正常,但我担心随着我添加更多页面并有更多页面参数需要跟踪,这种方法将难以使用各种PHP require()
/ require_once()
方法进行维护调用
我也有jQuery可用,我想知道只使用基于AJAX的查询来呈现<div id="main">
的HTML会有什么好处或缺点。
我认为使用AJAX可能是一个更好的解决方案,因为我可以在我可以调用的页面中具有更大的灵活性,以及我可以在AJAX调用中传递哪些参数。
我知道PHP和AJAX可以一起使用,但是如果你开始这种类型的项目,你会怎么做?
答案 0 :(得分:8)
你不想这样做。 AJAX很好,但除此之外都会误用它。它不仅会不必要地使禁用Javascript的人无法访问该网站(我相信您已经知道),它也会破坏您网站上的网络导航标准。怎么会有人发送链接给朋友看看Races页面呢?我怎样才能在页面之间来回走动?有这方面的解决方法,但它不值得。您更适合重新考虑PHP代码,因此它是动态的,同时包含您想要的内容。
答案 1 :(得分:5)
为了扩展Paolo所说的内容,Google和其他搜索引擎无法“抓取”通过javascript加载的任何内容。这意味着只有页面上的静态信息才会被编入索引,而您的页面排名将完全不存在。
答案 2 :(得分:0)
如果您使用ajax,您仍然会与需要设置所请求任务的php进行交谈,因此没有任何改变。我想我想知道你为什么要将一个参数传递回一个PHP脚本,而不是像这样调用不同的php文件:
<td><a href="races.php">Races</a></td>
<td><a href="runners.php">Runners</a></td>
<td><a href="searchrunners.php">Search</a></td>
答案 3 :(得分:0)
将它们分开。使用模板系统。一个非常简单的使用方法是http://andy.greyledge.net/voot/index.php
您首先使用包含Replacers的HTML模板页面,例如“%HEADER%”或%FOOTER%或%BODY%。
将此页面导入php页面,设置这些变量然后渲染页面。
如果您想添加更多页面,可以将其添加到HTML模板的菜单中,并显示每个页面。
其他人说的都是正确的。
答案 4 :(得分:-1)
另一种选择是使用您想要的页面数组:
<?php
$pages = array('page', 'races');
$MYROOT=$_SERVER['DOCUMENT_ROOT'];
if(isset($pages[$_GET['page']])){
@require_once($_GET['page'].'.php');
}
?>
但是如果您打算这样做,您可能想要考虑转移到MVC框架,因为这似乎是您尝试重新创建的