iframe 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 role="form" id="myFrm" name="myFrm" 
				action="<%=h_common_path%>/ccer/initCcerProject.action?state=notice"  method="post">
					<table>
                                             一堆<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"); ///如果页面的字段 跟查询需要的字段一样 就可以直接追加来使用,不会在后期还要判断。
}

Tagged: , ,

Comments are closed.