Использовать шаблоны PHP или вызовы jQuery AJAX? - PullRequest
0 голосов
/ 26 марта 2009

Это фрагмент моей страницы 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 для рендеринга HTML-кода для <div id="main">.

Я думаю, что использование AJAX может быть лучшим решением, поскольку у меня будет больше гибкости на странице, которую я могу вызвать, и какие параметры я могу передать в вызове AJAX.

Я знаю, что PHP и AJAX можно использовать вместе, но если бы вы начинали проект такого типа, как бы вы это сделали?

Ответы [ 5 ]

8 голосов
/ 26 марта 2009

Ты не хочешь этого делать. AJAX хорош, и все, но это будет неправильно его использовать. Это не только излишне сделает сайт недоступным для людей с отключенным Javascript (что, я уверен, вы знаете), но и уничтожит стандарт навигации на вашем сайте. Как мог кто-то отправить ссылку другу, чтобы проверить страницу рас? Как я могу переходить между страницами? Есть обходные пути к этому, но оно того не стоит. Вы лучше подходите для перефакторинга вашего PHP-кода, чтобы он был динамичным и безопасным, включая то, что вы хотите.

5 голосов
/ 26 марта 2009

Чтобы расширить сказанное Паоло, Google и другие поисковые системы не могут "сканировать" любой контент, загруженный через JavaScript. Это означает, что только статическая информация на странице будет проиндексирована, и ваш рейтинг страницы будет практически отсутствовать.

0 голосов
/ 05 мая 2009

Другой альтернативой может быть использование массива страниц, которые вы хотите иметь:

<?php 
    $pages = array('page', 'races');
    $MYROOT=$_SERVER['DOCUMENT_ROOT'];
    if(isset($pages[$_GET['page']])){
        @require_once($_GET['page'].'.php');
    }
?>

Но если вы собираетесь сделать это таким образом, вы можете подумать о переходе на MVC-фреймворк, так как кажется, что это то, что вы пытаетесь воссоздать

0 голосов
/ 26 марта 2009

Сделайте их отдельными страницами. Используйте систему шаблонов. Очень простой в использовании это http://andy.greyledge.net/voot/index.php

Вы начинаете с страницы шаблона HTML с заменителями, например "% HEADER%" или% FOOTER% или% BODY%.

Вы импортируете эту страницу на страницу php, установите эти переменные и затем отобразите страницу.

Если вы хотите добавить больше страниц, вы добавляете его в меню в шаблоне HTML, и он отображается для каждой страницы.

И все, что все остальные сказали, правильно.

0 голосов
/ 26 марта 2009

если вы используете 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...