我有一个页面通过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中的错误吗?
答案 0 :(得分:2)
不,这不是错误,encodeURI
不会对等号=
进行编码,因此当Ext.urlDecode
解析字符串时,它会将其视为 URI 的一部分 - ...AAA = ''
和'' = '' // useless / discarded
。
答案只是在编码 URI的“component”部分时使用正确的函数:
encodeURI('...AAA=='); // "...AAA=="
encodeURIComponent('...AAA=='); // "...AAA%3D%3D"
差异详见documentation。