【发布时间】:2017-06-10 05:38:27
【问题描述】:
我们的新 URL 结构如下所示
http://domain.com/#/test?utm_source=test&utm_medium=test
我们需要在 URL 中保留 #(哈希符号),因为应用程序依赖于它,但同时我们还需要查询字符串才能工作,但问题是如果 URL 包含 # 并且应用程序/服务器甚至没有,浏览器将从请求中跳过查询字符串收到他们。
【问题讨论】:
我们的新 URL 结构如下所示
http://domain.com/#/test?utm_source=test&utm_medium=test
我们需要在 URL 中保留 #(哈希符号),因为应用程序依赖于它,但同时我们还需要查询字符串才能工作,但问题是如果 URL 包含 # 并且应用程序/服务器甚至没有,浏览器将从请求中跳过查询字符串收到他们。
【问题讨论】:
首先,它不起作用;但是您可以做的一件事是,在页面上放置一个javascript 代码,您可以在其中将路由和 AJAX 请求与 API 进行比较(仅返回所需的数据)。伪代码可以,
window.onload = function(){
if(window.location.hash == "you needed"){
xhr(url_needed_with_json_or_xml);
}
}
注意:缺点是您可能需要将路由保留在客户端 js,否则请更改基于哈希的 url 路由。
【讨论】:
你不能这样做:
https://en.wikipedia.org/wiki/Fragment_identifier 由井号 # 引入的片段标识符是文档 URL 的可选最后部分。它通常用于标识该文档的一部分。通用语法在 RFC 3986 中指定。URI 中的哈希标记分隔符不属于片段标识符。
解决方案:
省略此标签并始终在此路由位置使用主题标签
作为 $_GET 参数与 urldecode 一起使用
【讨论】: