如何在url哈希片段

时间:2016-12-13 19:26:59

标签: javascript angularjs json url single-page-application

我有一个JS(Angular)应用程序,它从url片段加载参数(在#hash符号之后) - 并且参数包含json对象 - 比如

...#filters={"Course":["ST_12.+13.12.2016 [Basel]"]}

目的是打开数据网格并预过滤一些数据 - 因此该对象非常通用。

麻烦的是,像这样的任何字符串都会转换为

filters=%7B%22Course%22:%5B%22ST_12.+13.12.2016+%5BBasel%5D%22%5D%7D

在目标系统中读取时被视为

...#filters={"Course":["ST_12. 13.12.2016 [Basel]"]}

所以它失去了+并将其变成了一个空间。显而易见的解决方案是将+字符编码为%2b,如

filters=%7B%22Course%22:%5B%22ST_12.%2B13.12.2016+%5BBasel%5D%22%5D%7D

但这失败了。当您将其键入浏览器(chrome / firefox)时,%2b会立即在URL字段中直接解码回+,从而再次导致原始问题。

我还搜索了网络,我发现的所有答案都讨论了为什么空间必须被+编码等的初学者问题,但这并不是我所关注的。我真的需要传递包含真实文本的普通字符串值,包括。 +字符可靠。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用window.decodeURIComponent()?我可以使用decodeURIComponent()对字符串进行解码,并返回正确的格式,包括+和您编码的所有内容。