一些在线文章说,URL中没有querystring
和hash
的标准,但是我们正在跟踪持续发生的情况。因此,我的问题是在同一URL中同时具有querystring和hash的更好方法是什么。
我认为的问题是,如果哈希跟随查询字符串,它可以成为某些查询字符串数据的值,如果查询字符串跟随哈希,则整个查询字符串可能会变得很麻烦。那么,我应该遵循什么顺序?
答案 0 :(得分:2)
一些在线文章说,URL中的查询字符串和哈希没有标准
它们是错误的,或者您是在误解它们。
查询字符串必须出现在片段标识符(您称为哈希)之前。
specification显示URI的格式:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
它清楚地显示了查询之后出现的片段。
如果哈希值紧跟查询字符串,则它可以成为某些查询字符串数据的值
不能。 #
是一个特殊字符,指示片段的开始。要在查询字符串数据中包含一个,需要将其转义为%23
。
答案 1 :(得分:0)
这是我在JavaScript中尝试过的事情:
window.location="alpha#abc?def=34";
console.log(window.location);
结果是:
Location {
hash: "#abc?def=34",
search: "",
...otherData
}
然后:
window.location="alpha?abc=34#def";
console.log(window.location);
结果是:
Location {
hash: "#def",
search: "?abc=34",
...otherData
}
很明显,JavaScript不区分#符号后的任何内容,而哈希之前的querystring可以正常工作。
因此,我们应该先使用querystring,然后再使用散列。