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"); ///如果页面的字段 跟查询需要的字段一样 就可以直接追加来使用,不会在后期还要判断。 }