web-dev-qa-db-ja.com

現在のURLにURLパラメーターを追加する方法は?

現在http://example.com/topic.php?id=14にいるので、現在のURLを定義しないことでhttp://example.com/topic.php?id=14&like=likeへのリンクを作成したいです。 <a href="&like=like">Like</a>が好きです。しかし、この最後のものは私を示していますhttp://example.com/&like=like

37
ilhan

追加のパラメーターを追加しながら既存のクエリ文字列を保持する相対URIを記述する方法はありません。

必ず:

topic.php?id=14&like=like
11
Quentin
function currentUrl() {
    $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
    $Host     = $_SERVER['HTTP_Host'];
    $script   = $_SERVER['SCRIPT_NAME'];
    $params   = $_SERVER['QUERY_STRING'];

    return $protocol . '://' . $Host . $script . '?' . $params;
}

次に、次のような値を追加します。

echo currentUrl().'&value=myVal';
15
Marco Pace

私はゲームに遅れていることは知っていますが、あなたはただ_?id=14&like=like次のようにhttpビルドクエリを使用します。

http_build_query(array_merge($_GET, array("like"=>"like")))

あなたが持っていたどんなGETパラメータもそこにあり、likeが上書きされる前にパラメータだった場合、そうでなければ最後に含まれます。

9

「like」をパラメーターとして使用する場合は、リンクを次のようにする必要があります。

<a href="/topic.php?like=like">Like</a>

おそらくあなたが望むことです:

<a href="/topic.php?id=14&like=like">Like</a>
2
span

JavaScriptでURLパラメーターを追加する場合は、 this answer を参照してください。そこで提案されているように、次のように、最新のブラウザで URLSeachParams APIを使用できます。

<script>
function addUrlParameter(name, value) {
  var searchParams = new URLSearchParams(window.location.search)
  searchParams.set(name, value)
  window.location.search = searchParams.toString()
}
</script>

<body>
...
  <a onclick="addUrlParameter('like', 'like')">Like this page</a>
...
</body>
0
mrts

たぶん次のように関数を書くことができます:

var addParams = function(key, val, url) {
  var arr = url.split('?');
  if(arr.length == 1) {
    return url + '?' + key + '=' + val;
  }
  else if(arr.length == 2) {
    var params = arr[1].split('&');
    var p = {};
    var a = [];
    var strarr = [];
    $.each(params, function(index, element) {
      a = element.split('=');
      p[a[0]] = a[1];
      })
    p[key] = val;
    for(var o in p) {
      strarr.Push(o + '=' + p[o]);
    }
    var str = strarr.join('&');
    return(arr[0] + '?' + str);
  }
}
0
killernova