“附加一个带有先前网址中已经存在的附件的网址?” 这是最令人困惑的标题——我知道。但我想不出更好的方式来解释它。
也许下面的例子会有所帮助。
我有网址 1:http://example.com/?value=xyz&stuff=abc
如果有人点击页面内的链接,我可以传递附加值吗?
IE:http://www.example.org/?value=xyz&stuff=abc
感谢和抱歉成为这样的菜鸟。
“附加一个带有先前网址中已经存在的附件的网址?” 这是最令人困惑的标题——我知道。但我想不出更好的方式来解释它。
也许下面的例子会有所帮助。
我有网址 1:http://example.com/?value=xyz&stuff=abc
如果有人点击页面内的链接,我可以传递附加值吗?
IE:http://www.example.org/?value=xyz&stuff=abc
感谢和抱歉成为这样的菜鸟。
您询问的这些附件是 URI 的实际所谓的查询部分:
<scheme>://<authority><path>?<query>
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
取自:3. 语法组件(RFC 3986) https://www.rfc-editor.org/rfc/rfc3986#page-16
然后,您需要一个辅助函数,将(可选)附加<query>
到现有<scheme>://<authority><path>
部分。我忽略了<fragment>
这个例子,因为它需要在最后添加,我想留下一些东西作为练习:
function href_append_query($href)
{
$query = isset($_SERVER['QUERY_STRING'])
? '?' . $_SERVER['QUERY_STRING']
: ''
;
$query = strtr(
$query, [
'"' => '"',
"'" => ''',
'&' => '&'
]
);
return $href . $query;
}
它的用法:
<a href="<?=href_append_query('http://step2.com/')?>Some link</a>
这个小功能将确保QUERY_STRING
可以通过$_SERVER
Docs获得的现有内容被编码为 HTML 输出。
如果链接是用 PHP 构建的,只需将原始查询字符串附加到它们:
<a href="http://step2.com/?<?php echo $_SERVER['QUERY_STRING']; ?>">Some link</a>
在 JavaScript 中,只需将 的值附加window.location.search
到您需要“传递”查询字符串的所有链接。
您还可以使用 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);
});
});