我有一个页面通过 ExtJS 在 iframe 中加载其他一些页面:
alert(UNID); // returns ...AAA==
...
autoEl:{
tag:"iframe",
src: someurl+'?anyparam=anything&unid='+encodeURI(UNID)+'&someparam='
// Chrome Console (Network tab) tells me the URI is ...AAA==&someparam=
}
另一个网站使用 ExtJS 来解码给定的参数。
var params = Ext.urlDecode(window.location.search);
alert(params.unid); // returns ...AAA
我的错误在哪里?如果没有,这是encodeURI 或urlDecode 中的错误吗?
最佳答案
不,这不是一个错误,encodeURI
没有编码等于 =
符号,因此当 Ext.urlDecode
解析字符串时,它会将其视为URI 的一部分 - ...AAA = ''
和 '' = ''//无用/丢弃
。
答案很简单,就是在对URI 的“组件”部分进行编码时使用正确的函数:
encodeURI('...AAA=='); // "...AAA=="
encodeURIComponent('...AAA=='); // "...AAA%3D%3D"
documentation 中详细介绍了这些差异.
关于javascript - 编码 URI 和 Ext.urlDecode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241259/