iframe post提交数据
- - Web前端 - ITeye博客对于iframe默认get提交 需要进行post数据的大量提交,给找到外国网站的简单例子如:
对于iframe默认get提交 需要进行post数据的大量提交,给找到外国网站的简单例子如:
<form action="iframe.php" target="my-iframe" method="post">
<label for="text">Some text:</label>
<input type="text" name="text" id="text">
<input type="submit" value="post">
</form>
<iframe name="my-iframe" src="iframe.php"></iframe>
因为我项目用到的是 页面用的tab 样式(如何实现tab样式切换这里不做说明),嵌入的是三个页面iframe,需要在切换的时候更改target指定iframe名字,为了验证是否可行,只好试下,不然无别的办法。
<form class="form-inline" role="form" id="myFrm" name="myFrm"
action="<%=h_common_path%>/ccer/initCcerProject.action?state=notice" method="post">
<table class="table table-bordered">
一堆<input />条件 ,可以使用jquery json来post得到查询参数
</table>
</form>
//条件查询,查询按钮触发事件
function querySelect(){
var myFrmJsonStr = formToJsonStr("myFrm");
console.log("-------------:"+myFrmJsonStr);
//放在隐藏域中,后台getParameter()这个参数
$("#myFrmJsonStr").val(myFrmJsonStr);
document.getElementById("myFrm").target="tabsFrame_ypz"; //当点击查询按钮才处理时间
document.getElementById("myFrm").submit();
}
//处理form json字符串
function formToJsonStr(frmId){
var jsonStr = "{";
var formArray = $("#"+frmId).serializeArray();
for(var i = 0; i < formArray.length;i++ ){
var formArrayValue = formArray[i];
var name = formArrayValue.name;
var value = formArrayValue.value;
//hidden Input name名字为 MyFrmJsonStr不组合成json字符串提交到后台,这里它的作用是作为json字符串赋值用
if(name!="myFrmJsonStr")
jsonStr = jsonStr + "'"+name + "':"+"'"+value+"',";
}
jsonStr = jsonStr.substring(0,jsonStr.length-1) + "}";
return jsonStr;
}
tabCut('div_ypz');
function tabCut(tabId){
var url = "";
var getJsonStr = $("#myFrmJsonStr").val();
switch (tabId) {
case 'div_ypz':
url = "/ccer/initCcerProject.action?state=notice";
//url = "/pages/ccer/noticeCCER.jsp";
if(!document.getElementById("tabsFrame_ypz")){
$("#"+tabId).append('<iframe name="tabsFrame_ypz" id="tabsFrame_ypz" style="height: 680px;width:100%" border="0" frameborder="0" src="<%=h_common_path %>'+url+'">浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。</iframe>');
}
if(""!=getJsonStr){
document.getElementById("myFrm").action="<%=h_common_path %>"+url;
document.getElementById("myFrm").target="tabsFrame_ypz";
}
break;
case 'div_yzc':
url = "/ccer/initCcerProject.action?state=record";
if(!document.getElementById("tabsFrame_yzc")){
$("#"+tabId).append('<iframe name="tabsFrame_yzc" id="tabsFrame_yzc" style="height: 680px;width:100%" border="0" frameborder="0" src="<%=h_common_path %>'+url+'">浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。</iframe>');
}
if(""!=getJsonStr){
document.getElementById("myFrm").action="<%=h_common_path %>"+url;
document.getElementById("myFrm").target="tabsFrame_yzc";
}
break;
case 'div_yqf':
url = "/ccer/initCcerProject.action?state=issue";
if(!document.getElementById("tabsFrame_ygf")){
$("#"+tabId).append('<iframe name="tabsFrame_ygf" id="tabsFrame_ygf" style="height: 680px;width:100%" border="0" frameborder="0" src="<%=h_common_path %>'+url+'">浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。</iframe>');
}
if(""!=getJsonStr){
document.getElementById("myFrm").action="<%=h_common_path %>/"+url;
document.getElementById("myFrm").target="tabsFrame_ygf";
}
break;
}
if(""!=getJsonStr){
document.getElementById("myFrm").submit();
}
console.log("tabId:"+tabId+"///// url:"+url);
}
后台java代码:
处理jsonStr代码段如下:
if(!"".equals(jsonStr)){
//jsonStr格式 为 {"prName":"项目名称","psr":"psr状态"} ,根据json格式字符格式来get()值
net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(jsonStr);
String prName=(String) jsonObj.get("prName");
String psr = (String) jsonObj.get("psr"); ///如果页面的字段 跟查询需要的字段一样 就可以直接追加来使用,不会在后期还要判断。
}