我正在使用 Ext JS 的 routing在我的应用程序中,但这是一个更基本的问题...只需知道 Ext JS 中的路由设置类似于 http://url/#area1/subarea1
,其中 #area1 将带我到父级区域,subarea1 将带我到area1 的第一个子项目。
无论如何,我想要完成的是将查询参数添加到我的 URL...所以它会像 http://url/#area1/subarea1?startDate=03/03/2014&isDraft= true
,但看起来像 location.search
在 FF 和 Chrome 中都是一个空字符串,所以我假设这是设计使然。我知道我可以解析 location.href,但这看起来很愚蠢。我基本上想知道我是否做错了什么,或者是否还有其他我可以使用的属性?
最佳答案
位置 URL 始终具有以下顺序:协议(protocol)主机名路径名搜索哈希。在您的情况下,搜索为空,因为 #
位于第一个 ?
之前。
因此,在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] || {})
。
关于JavaScript:通过使用 # 符号的路由从 URL 获取查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798608/