要使用PHP模板还是jQuery AJAX调用?

时间:2009-03-26 18:06:10

标签: php jquery ajax

这是我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可以一起使用,但是如果你开始这种类型的项目,你会怎么做?

5 个答案:

答案 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框架,因为这似乎是您尝试重新创建的