【发布时间】:2017-04-28 23:34:51
【问题描述】:
我有一个 JS (Angular) 应用程序,它从 url 片段(在 # 井号之后)加载参数 - 并且参数包含 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 字段中直接解码回一个 + - 再次导致原始问题。
我还搜索了网络,我找到的所有答案都讨论了初学者的问题,为什么必须对空格进行 + 编码等,但这不是我关心的问题。我真的需要传递一个包含真实文本的普通字符串值,包括。 + 字符可靠。
【问题讨论】:
标签: javascript angularjs json url single-page-application