【问题标题】:Ember QueryParams with "=" character带有“=”字符的 Ember QueryParams
【发布时间】:2015-04-08 22:18:45
【问题描述】:

我这里有一个相对简单的问题,但还没有找到解决方案。我正在使用 Ember 并使用查询参数调用路由。代码如下。

从“ember”导入 Ember;

export default Ember.ObjectController.extend({
    queryParams : ['user_id','custom_lis_person_name_given']
    user_id : null,
    custom_lis_person_name_given : null
});

所以现在假设我正在使用以下 url 调用我的路线,

localhost:4200/index.html#/route1?user_id=123456&custom_lis_person_name_given=hello

现在查询参数的值是

user_id = 123456
custom_lis_person_name_given = hello

现在如果我改变我的网址看起来像

localhost:4200/index.html#/route1?user_id=12345=6&custom_lis_person_name_given=hello
localhost:4200/index.html#/route1?user_id=123456=&custom_lis_person_name_given=hello

现在该值计算为

user_id = 12345 or user_id=123456
custom_lis_person_name_given = hello

所以基本上该值在它看到查询参数值中的 = 符号处结束。有解决方法吗?我需要 user_id="12345=6""123456="

也许控制器或路由中有一些钩子可以做到这一点。我尝试了 serializeQueryParamdeserializeQueryParam 但没有帮助。

提前致谢

【问题讨论】:

  • 我有一种解决方法,方法是在创建 URL 之前转义 queryParamter。我刚刚做了 escape('123456=') 并且它起作用了。但是在应用程序中,url 是在后端创建的。如果我能在 UI 端完全修复它会更好

标签: ember.js


【解决方案1】:

你试过了吗:

encodeURIComponent(url)

?

那个人应该做这项工作。请注意,您仍然需要对 = 符号进行编码,所以它应该是正确的。

encdeURIencodeURIComponent 之间的区别在这里很好地描述了: Should I use encodeURI or encodeURIComponent for encoding URLs? 在接受的答案中。

编辑:

如果您想手动编辑链接并检查它是否有效,只需将= 替换为%3D,即encodeURIComponent("=") 的结果。

【讨论】:

  • 这种情况就像整个URL(ember route + query params)是在java文件中生成并在浏览器中调用的。是的,所以一种解决方案是从 java 端进行 escape(url) 。但我想知道我是否可以从 UI 本身做些什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多