来源于自己的博客小站“虾米成长记”!转载请注明出处,谢谢!
Ext.window.Window是Extjs中用的比较多的控件,我们通过给其的html属性赋值,显示出窗体界面。当我们要在Window中加载其他页面时,我们会用到Iframe,将引用页面的路径赋值给iframe的src属性。有时我们可能还要给加载的页面传递参数,那最简单的方法就是在页面地址后面加参数,示例代码如下:
var win=Ext.create('Ext.window.Winodw',{
html:'<iframe src="xxx.aspx?param1=1¶m2=2"></iframe>',
……
});
win.show();
上述的传参方式其实是采用get方法,它在传递参数的长度上是有限制的,因此不能传递很多参数。而我们有时又会遇到需要传递很多参数的场景,这样就面临如题的传参问题。那我们该如何解决这个问题呢?我们会最自然地想到使用post方法传参。那如何使用post方法传参是下面的重点。先贴出示例代码:
var url='xxx.aspx';
var html='<form action="'+url+'" method="post" target="_self" id ="TestForm"><input id="Param1" value="1" name="Param1" type="hidden"/></form>';
var win=Ext.create("Ext.window.Window",{
html:'<iframe id="TestIframe"></iframe>',
listeners:{
show:function(){
document.getElementById("TestIframe").contentWindow.document.write(html);
document.getElementById("TestIframe").contentWindow.document.getElementById("TestForm").submit();
}
},
……
});
从上面的代码可以看出解决的思路大致是这样的:先定义了一个form,form的action是要加载的页面地址,form的method为post,form里使用了隐藏的input控件,将要传递的参数赋值给input的value。在window的html里定义了一个iframe,当window显示时,将form嵌入到iframe中,同时提交form,这样就实现了使用post方式传参的目的,并且可以传递很多的参数。
网友评论