JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
JavaScript: Get query string from URL with routing that uses # sign
我在我的应用程序中使用了Ext JS的路由,但这是一个更基本的问题......只要知道 Ext JS 中的路由设置得像 http://url/#area1/subarea1
一样,#area1 会将我带到父级别区域,子区域 1 会将我带到区域 1 的第一个子项。
无论如何,我正在尝试完成的是将查询参数添加到我的 URL 中......所以它会像 http://url/#area1/subarea1?startDate=03/03/2014&isDraft=true
,但看起来 location.search
在 FF 和 Chrome 中都是一个空字符串,所以我假设这是设计使然。 我知道我可以解析 location.href,但这似乎很愚蠢。 我基本上想知道我是否做错了什么,或者是否有其他属性可以使用?
位置 URL 始终具有以下顺序:协议主机名路径名搜索哈希。在您的情况下,搜索为空,因为#
在第一个?
之前。
所以,在http://url/#area1/subarea1?startDate=03/03/2014&isDraft=true
,
-
location.protocol
http:
-
location.hostname
url
-
location.pathname
/
-
location.search
为空 -
location.hash
#area1/subarea1?startDate=03/03/2014&isDraft=true
因此,location.hash.split('?')[1]
应该包含所需的"查询参数",或者如果您希望它们作为对象,Ext.Object.fromQueryString(location.hash.split('?')[1] || {})
.
我刚刚在 Angular 中遇到了同样的问题。这是我的解决方案:
function getParameterByName(name, url) {
if (!url) url = window.location.href;
url = url.toLowerCase();
name = name.replace(/['[']]/g, "''$&").toLowerCase();
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/'+/g, " "));
}
相关文章:
- 如何使失败的路由解析承诺加载不同的模板URL
- 在angularjs中动态路由url路径
- API的快速路由-当您有子资源时的URL处理程序
- 直接使用 React Router + React + Flux 路由到 URL
- JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
- Angular-使字符串对URL安全-路由是否正确
- UI路由器:直接使用url访问路由
- 如何在CanJS中更改路由url
- 根据路由URL设置select的值
- AngularJS路由:URL中不必要的参数
- 如何找出哪个 JS 文件正在重新路由 URL
- 节点 JS 路由 URL 冲突
- 在应用程序启动时生成路由 URL 列表,并插入到 MVC 中的 javascript 文件中
- Ember.js路由:url中的动态段错误
- 重新路由url | Nodejs | Express
- 如何在AngularJS的路由url中传递参数
- EMBER直接路由URL访问不加载数据
- 如何在角度应用程序中访问非路由 URL 参数
- AngularJS路由url删除这个&;#!&;
- 如何从AngularJS的路由/ url中移除标签