encodeURI和Ext.urlDecode

时间:2014-01-20 18:15:29

标签: javascript extjs

我有一个页面通过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中的错误吗?

1 个答案:

答案 0 :(得分:2)

不,这不是错误,encodeURI不会对等号=进行编码,因此当Ext.urlDecode解析字符串时,它会将其视为 URI 的一部分 - ...AAA = '''' = '' // useless / discarded

答案只是在编码 URI的“component”部分时使用正确的函数:

encodeURI('...AAA==');           // "...AAA=="
encodeURIComponent('...AAA==');  // "...AAA%3D%3D"

差异详见documentation