2012-09-17 220 views
1

「附加了一個url,該附件已經在前一個url中? 這是最令人困惑的標題 - 我知道。但我想不出一個更好的解釋方法。將查詢字符串附加到URL

也許下面的例子會有所幫助。

我有URL 1:http://example.com/?value=xyz&stuff=abc

如果有人點擊該頁面中的鏈接,我可以沿着附加價值傳遞?

即:http://www.example.org/?value=xyz&stuff=abc

感謝和你是這樣一個noob遺憾。

+0

如何這個環節是建立?使用JavaScript或PHP? – raina77ow

+1

你的代碼在哪裏?你有沒有嘗試過任何東西? –

+0

你是什麼意思傳遞它?你想要在網址中嗎?在PHP中,該信息位於'$ _SERVER ['QUERY_STRING']'中 – ernie

回答

3

如果鏈接與PHP構建,只是原來的查詢字符串附加到他們:

<a href="http://step2.com/?<?php echo $_SERVER['QUERY_STRING']; ?>">Some link</a> 

在JavaScript中,只是window.location.search值追加到所有你需要「通行證」的查詢字符串的鏈接。

6

你問這些附屬物是一個URI的實際所謂查詢部分:3.語法成分(RFC 3986)http://tools.ietf.org/html/rfc3986#page-16

<scheme>://<authority><path>?<query> 

    foo://example.com:8042/over/there?name=ferret#nose 
    \_/ \______________/\_________/ \_________/ \__/ 
    |   |   |   |  | 
scheme  authority  path  query fragment 

來自

然後,您需要一個輔助函數,將(可選)<query>附加到現有的<scheme>://<authority><path>零件上。我忽略了<fragment>此〔實施例,因爲這將需要在年底前加入,我想留下點什麼作爲練習:

function href_append_query($href) 
{ 
    $query = isset($_SERVER['QUERY_STRING']) 
     ? '?' . $_SERVER['QUERY_STRING'] 
     : '' 
    ; 

    $query = strtr(
     $query, [ 
      '"' => '&quot;', 
      "'" => '&#39;', 
      '&' => '&amp;' 
     ] 
    ); 

    return $href . $query; 
} 

而且它的用法:

<a href="<?=href_append_query('http://step2.com/')?>Some link</a> 

這個小功能確保可以通過$_SERVERDocs獲得的現有QUERY_STRING爲HTML輸出編碼。

0

你也可以用js/jQuery的追加現有的查詢字符串到頁面上的每一個環節:

$(function() { 
    $('a').each(function() { 
     link = $(this).attr('href'); 
     query = window.location.search; 
     if (link.indexOf('?') !== -1 && query !== '') { 
     query = query.replace('?','&'); 
     } 
     $(this).attr('href',link+query); 
    }); 
    });