在showModalDialog中使用post方法传递参数
来源:互联网 发布:迈克菲和360知乎 编辑:程序博客网 时间:2024/06/05 23:54
SharePoint从2010的版本开始,提供了一个自己的打开模态窗口的方法:showModalDialog。这个方法的options参数接收一个url,这个url就是在模态窗口中打开的页面的url。
以下是通常我们使用showModalDialog的方法,首先构造options,提供url(其中包含一些query string)和其他的例如长宽的参数:
function ShowModalDialog(longUrl) { var options = { url: longUrl, tite: 'Test Long Url', width: 500, height: 400, dialogReturnValueCallback: DialogCallback }; SP.UI.ModalDialog.showModalDialog(options); }ShowModalDialog("http://localhost/sites/abc.aspx?p=jfsjfsjjslkfjksdjflsjfskljskdfsdlj..."); //打开abc.aspx页面,但是传入一个超出url长度的参数p在abc.aspx的后台代码abc.aspx.cs中,是这样获取p这个参数的值的:
string value = Request.Params["p"];
这段代码其实是有问题的,如果p的值太长,导致url超长的话,在页面后台获取的参数值就被截断了。原因是showModalDialog使用get方法打开这个页面,也就是说,url的长度是受到限制的,必须小于4096字节,否则会被截断。也许有人会说,可以使用options中的args参数,可以传递一个对象,但是这个对象在abc页面的后台代码中是取不到的。
那么showModalDialog能不能使用post的方式打开abc页面呢?这样就不会有截断的问题了,showModalDialog本身是不支持的,但是我们可以使用options中的html参数和iframe来达到同样的目的,下面是options中的html参数的说明:
也就是说,在使用showModalDialog打开页面的时候,可以自己写html,但是不能写纯字符串,而是一个DOM element。所以我们可以定义一个iframe,使用iframe提交post请求:
function ShowModalDialog(url, bigData) { var iframe = document.getElementById("postiframe"); if (!iframe) { iframe = document.createElement("iframe"); iframe.id = "postiframe"; iframe.name = "postiframe"; iframe.frameborder = "0"; iframe.style.width = "500px"; iframe.style.height = "400px"; } var myForm = document.createElement("form"); myForm.id = "formtosubmit"; myForm.method = "post"; //使用post方式提交 myForm.action = url + "&isDlg=1"; //以dialog方式打开 myForm.target = iframe.id; var dataInput = document.createElement("input"); dataInput.name = "bigData"; dataInput.value = arg; //将值赋予这个隐藏的field var submitInput = document.createElement("input"); submitInput.setAttribute('type', "submit"); myForm.appendChild(hiddenField); myForm.appendChild(submitField); document.body.appendChild(myForm); var options = { //url: url, html:iframe, tite: '', width: 500, height: 400, dialogReturnValueCallback: DialogCallback }; SP.UI.ModalDialog.showModalDialog(options); myForm.submit(); document.body.removeChild(myForm);}ShowModalDialog(“http://localhost/sites/abc.aspx”, "sdfsdfsfsfsfsfss...");这样就可以在abc页面的后台代码中,通过
Request.Form["bigData"]来获得post的数据了。这样就可以通过showModalDialog传递任意长度的数据了。
0 0
- 在showModalDialog中使用post方法传递参数
- jsp中使用POST的方法在网页之间传递参数的简单方法
- JS中showModalDialog参数传递
- ShowModalDialog方法的参数传递研究
- ShowModalDialog方法的参数传递研究
- 在数据绑定控件中使用LinkButton传递参数方法
- 浅谈jsp中get和post方法参数传递
- 关于微信小程序POST请求中参数传递的方法
- showModalDialog 传递参数
- js showModalDialog参数传递
- js showModalDialog参数传递
- window.showModalDialog参数传递
- ajax使用POST传递参数
- 在settimeout方法中传递参数
- 在今天的测试过程中,我刚开始使用get方法传递参数,出现乱码,但是使用post传参数好着的,需要在tomcat的server.xml里面进行设置URIEncoding="UTF-8"即可
- WebMagic中使用POST请求并传递参数
- 在JQuery中可以使用get,post和ajax方法给服务器端传递数据
- web开发N例-案例3:使用post和get方法在php和html间传递参数
- java虚拟机和Dalvik虚拟机的区别,DVM为什么要设计成基于寄存器的!
- 面向对象——(5)方法重载
- 在Eclipse中,更改Tomcat的部署目录
- Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
- CentOS赋予一个普通用户root权限
- 在showModalDialog中使用post方法传递参数
- 【转载】自动检测iOS网络并可跳转至设置界面设置网络
- 如何写出杀手级简历(针对程序员)
- 如何把jar包发布到maven私服
- BeanUtils使用总结
- ios7版 30天精通iPhone手机编程 第20天 DJ混音器
- 打开和屏蔽计算机的端口
- UITabBarController详解
- Java 以post请求方式通过json格式调用Webservice接口