我正在尝试获取预定义变量$ _GET ['loc'] 谁能帮我 ? 问题是我不想使用javascript为ajax禁用我的锚标签。所以我做的是我刚刚在我的href上添加了一个哈希标记(#)。 URL看起来像这样
http://localhost/test/onspecial/index.php#filter?loc=dn
我需要达到的是访问$ _GET ['loc']。 我真的很感激任何帮助。
我的href属性看起来像这个
<a href="#filter?loc=dn"></a>
这是我在index.php中的完整导航栏,并希望为我的其他查询获取$ _GET ['loc']的值:
<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 :(得分:2)
更改:
http://localhost/test/onspecial/index.php#filter?loc=dn
要:
http://localhost/test/onspecial/index.php?loc=dn#filter
基本上,(几乎)URL中的?
之后的所有内容都是“查询字符串”,直到达到#
。然后,(几乎)#
之后的所有内容都变成了“锚”。
?
必须在#
之前。
修改。
我不使用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>
答案 1 :(得分:0)
http://php.net/manual/en/function.parse-url.php
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)