2011-12-29 3 views
0

URLにどの要素のIDが記載されているかに基づいて、ページを2つの異なる方法で作成するにはどうすればよいですか?たとえば、URLがwebsite.com/page#id1だった場合、ページは1つのことを行い、それがwebsite.com/page#id2だった場合は別のことを行います。URLにどのIDが記載されているかに基づいて、ページに異なることを行う方法はありますか?

+0

このサーバー側またはクライアント側を行いますか? – mrtsherman

+0

のいずれかが問題ありませんが、クライアントサイドでは可能でしょうか。 – Proffesor

答えて

1

サーバー側とクライアント側の両方で、答えは「はい」です。

サーバ側の、あなたのURLは、たとえば、あなたが持っているとは異なる構造化する必要があるであろう:

http://website.com/page?id=1 

...またはRESTfulなと後者を用いて達成することができる

http://website.com/page/1 

をルーティングApacheのmod_rewriteのようなものです。

PHPコード内のid値にアクセスするには、$_GET['id']とし、適切に処理します。

クライアント側では、location.hashまたはlocation.hrefを使用してJavaScriptを使用する必要があります。 GitHubは、ナビゲート可能なハッシングで大きな効果を発揮します。あなたは、URLのparamに応じて、ページの読み込みに何かを変更したい場合は、クライアント側は、あなたがJavaScriptを使用する必要があります場合は

0

URLのハッシュ部分がサーバーに渡されていないため、たとえば、それを行うためのJavaScript。 JavaScriptを「ハッシュ」で

URLの一部がそのような利用可能です:

var hash_part = window.location.hash; 

し、それを取得した後、あなたは、たとえばことができます。

  • は、AJAX呼び出しによってサーバーに渡します
  • サーバーにハッシュを渡すページをリダイレクトします。

    window.location = '/check_hash.php?hash=' + hash_part.split('#')[1] 
    
  • またはサーバーをコールする必要がなく、何かの操作を行います:そのような

    alert('My hash is "' + hash_part + '", no need to call the server!'); 
    

それは助けていましたか?

0

あなたがPHPを利用したい場合は、次のようなURLのパラメータ届けることができます。

website.com/page.php?do=something 

または

website.com/page.php?do=somethingelse 

だからではなくPHPにパラメータを渡すために疑問符を使用する必要がありますがあなたの質問で使用したようにハッシュタグを使用するよりも。

あなたは、このパラメータを取得し、その値に基づいて何かを行うことができ、あなたのPHPコードで

<?php 

$param = $_GET['do']; 

if ($param == "something") { 
    //Do something... 
} 
else if ($param == "somethingelse") { 
    //Do something else... 
} 

?> 
0

この

if($_GET["id"] == "test"){ 
    do your stuff 
} 

例のようにそれを読むことができます。たとえば、

<script> 
    if (location.hash == 'id1') { 
     alert('page1!'); 
    } 
    else if (location.hash == 'id2') { 
     alert('page2!'); 
    } 
</script> 
関連する問題