2013-03-05 77 views
0

我想讓我的預定義變量$ _GET ['loc'] 任何人都可以幫助我嗎? 問題是我不想禁用我的錨定標記爲使用JavaScript的Ajax。所以我所做的只是在我的href上添加了一個散列標籤(#)。 的URL看起來像這樣獲取編碼的URL中的預定義變量

http://localhost/test/onspecial/index.php#filter?loc=dn 

我需要達到的訪問$ _GET [「祿」]。 我真的很感激任何幫助。

我的href屬性看起來像這樣

<a href="#filter?loc=dn"></a> 

這裏是我的index.php全導航欄,並希望得到的$ _GET [「祿」]我的其他查詢值:

<div class="navbar"> 
    <ul class="nav" id="nav"> 
    <li><a href="index.php">home</a></li> 
    <li><a href="index.php">about us</a></li> 
    <li><a href="index.php">contact us</a></li> 
    <li class="dropdown"> 
     <a id="drop_tog"href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="false">Location</a> 
     <ul class="dopdown-menu" id="loc"> 
     <li id="loc1"><a tabindex="-1" href="#filter?loc=dc" >City</a></li> 
     <li id="loc1"><a tabindex="-1" href="#filter?loc=ds" >South</a></li> 
     <li id="loc1"><a tabindex="-1" href="#filter?loc=dn" >North</a></li> 
     </ul> 
    </li> 

    </ul> 
</div> 

的JavaScript看起來像這樣getresult.php發送請求:

$(document).ready(function(e) { 
    function getLoc(param){ 
    //filter url 
    var encode = param.substring(7); 
    if(window.XMLHttpRequest){ 
    xmlhttp = new XMLHttpRequest(); 
    } 
    else{ 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function(){ 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
     document.getElementById("li_start").innerHTML = xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","getresult.php"+encode,false); 
    xmlhttp.send(); 
    } 

    //handle anchor clicks 
    $("ul#location li a").click(function(){ 
     var loc = $(this).attr("href"); 
     getLoc(loc); 
    }); 


}); 
+0

http://stackoverflow.com/題s/940905/can-php-read-the-hash-portion-of-url – 2013-03-05 04:55:05

+0

錨標籤與ajax有什麼關係? – Musa 2013-03-05 04:55:38

+0

以什麼方式訪問'$ _GET ['loc']'?用什麼? – 2013-03-05 04:59:26

回答

2

變化:

http://localhost/test/onspecial/index.php#filter?loc=dn 

要:

http://localhost/test/onspecial/index.php?loc=dn#filter 

基本上達到(幾乎)一切後,在URL中?是 「查詢字符串」 直到#。然後,(幾乎)#之後的所有內容都成爲「主播」。

?必須在#之前。

編輯基於額外的信息和HTML。

我不使用jQuery,它在我看來就像你正在使用的。因此,我在下面的示例中重新編寫了JavaScript和一小部分HTML。在你的HTML中,你沒有一個ID爲li_start的HTML標籤,但我認爲它是你HTML中的其他地方。

的JavaScript:

<script type="text/javascript"> 
function linkClick(id) { 
    page('li_start','/getresult.php?loc='+ id); 
} 
function loadPage(http, id, url){ 
    if((http.readyState == 4) && (http.status == 200 || window.location.href.indexOf("http") == -1)) { 
     document.getElementById(id).innerHTML = http.responseText; 
    } 
} 
function page(id, url){ 
    var http = false; 
    var bustCacheParam = (url.indexOf("?")!=-1)? "&"+ new Date().getTime() : "?"+ new Date().getTime(); 
    if (window.XMLHttpRequest) { 
     http = new XMLHttpRequest() 
    } else if (window.ActiveXObject){ 
     try { 
      http = new ActiveXObject("Msxml2.XMLHTTP") 
     } catch (e) { 
      try { 
       http = new ActiveXObject("Microsoft.XMLHTTP") 
      } catch (e) {} 
     } 
    } else { 
     return false; 
    } 
    http.open('GET', url+bustCacheParam, true); 
    http.onreadystatechange = function(){ loadPage(http, id, url); } 
    http.send(null); 
} 
</script> 

和改變HTML:

<ul class="dopdown-menu" id="loc"> 
    <li id="loc1"><a tabindex="-1" href="#" onclick="linkClick('dc');return false">City</a></li> 
    <li id="loc2"><a tabindex="-1" href="#" onclick="linkClick('ds');return false">South</a></li> 
    <li id="loc3"><a tabindex="-1" href="#" onclick="linkClick('dn');return false">North</a></li> 
</ul> 
+0

如果我將用「?」更改「#」這將使整個頁面重新加載在我的情況下,我需要的是我能夠獲得$ _GET ['loc']的價值,而不會停用JavaScript的鏈接。 – NEWBIE 2013-03-05 06:03:23

+0

我可以看到HTML的樣本嗎?也許是一個簡單的問題模型? – Tigger 2013-03-05 06:05:16