0

定義済みの変数 $_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);
    });


});
4

2 に答える 2

2

変化 :

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

に:

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

基本的に、URL の a の後の (ほとんど) すべては、aに到達?するまでの「クエリ文字列」です。#すると、(ほとんど) の後のすべて#が「アンカー」になります。

は の?前に来なければなりません#

追加情報と HTML に基づいて編集します。

私はあなたが使用しているように見えるjQueryを使用していません。そのため、次のサンプルでは JavaScript と HTML の一部を書き直しました。あなたの HTML には、id の HTML タグはありませんが、HTML のli_start別の場所にあると思います。

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>
于 2013-03-05T04:59:00.927 に答える
0

parse_urlを見てください

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
)
于 2013-03-05T05:58:06.010 に答える