2009-03-26 3 views
0

이것은 내 index.php 페이지의 스 니펫입니다. 여기에서 세 개의 HTML 링크가있는 메뉴가 표시됩니다.PHP 템플릿 또는 jQuery AJAX 호출을 사용 하시겠습니까?

메뉴 항목을 선택하면 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

그냥 팁을 나는 심각하게 $ _GET [ 'page'] – JasonDavis

답변

8

이 작업을 원하지 않습니다. AJAX는 좋지만이 모든 것은 오용 될 수 있습니다. 불필요하게 Javascript가 비활성화 된 사람들이 웹 사이트에 액세스 할 수 없도록 만들뿐 아니라 웹 사이트에서 웹의 탐색 표준을 없앨 수도 있습니다. 어떻게 누군가가 친구에게 경주 페이지를 체크 아웃하기위한 링크를 보낼 수 있습니까? 페이지간에 앞뒤로 어떻게 갈 수 있습니까? 이 문제에 대한 해결 방법이 있지만 그만한 가치는 없습니다. PHP 코드를 재조정하여 동적 인 반면, 원하는 것을 포함시키는 것이 안전합니다.

0

아약스를 사용하는 경우 요청한 작업에 대해 설정해야하는 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> 
5

파올로는 말을 확장하기 위해 Google 및 기타 검색 엔진을 할 수 없습니다 당신이 이런 식으로 다른 PHP 파일을 하나의 PHP 스크립트로 다시 매개 변수를 전달하는 대신 아마도 호출 할 이유가 궁금 같아요 크롤링 "자바 스크립트를 통해로드 된 모든 콘텐츠. 즉, 페이지의 정적 정보 만 인덱싱되고 페이지 순위는 존재하지 않는 것입니다.

+0

+1과 같은 것들을 위생적으로 고려할 것입니다 그 매우 중요한 점을 잊어 버렸습니다. –

0

별도의 페이지로 만듭니다. 템플리트 시스템을 사용하십시오. 아주 간단한 하나는 http://andy.greyledge.net/voot/index.php

"% HEADER %"또는 % FOOTER % 또는 % BODY %와 같은 Replacers가있는 HTML 템플릿 페이지에서 시작합니다.

이 페이지를 PHP 페이지로 가져오고,이 변수를 설정 한 다음 페이지를 렌더링하십시오.

페이지를 더 추가하려면 HTML 템플리트의 메뉴에 추가하고 모든 페이지에 대해 페이지를 추가하십시오.

다른 모든 사람들은 모두 옳다고 말했습니다.

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

그러나 당신이이 방법을 수행하려는 경우, 당신은 MVC 프레임 워크로 이동에 대해 생각 할 수 있습니다를 :

-1

또 다른 대안은 당신이 할 페이지의 배열을 사용하는 것입니다 그것은 당신이 다시 만들려고 시도하는 것 같습니다.

관련 문제