`

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

 

 

分享到:
评论
1 楼 lliiqiang 2019-05-11  
iframe不同域下,用tostatichtml(String.fromCode过滤,提交后台内存,返回唯一标志,再嵌套iframe,sandbox修饰,csp权限显示后台内存内容。

相关推荐

    关于iframe跨域POST提交的方法示例

    以前在面试的时候经常遇到问关于跨域的事儿,所以自己对跨域有一定的概念性了解,知道什么是跨域以及解决跨域的方法,但是具体实际从来没有操作过,直到最近在公司项目中,遇到了一个需要使iframe跨域进行POST提交的...

    iframe使用post数据方式显示

    ### 使用iframe与POST方法传输数据 #### 一、引言 在Web开发中,`&lt;iframe&gt;`(Inline Frame)是一种常用的HTML元素,用于在当前页面内嵌入另一个HTML文档。这种方式能够有效地实现在一个页面中展示不同的内容或功能...

    HTML5 postMessage+iframe实现文件跨域异步上传

    在现代Web开发中,文件跨域异步上传是一项...首先,我们创建一个包含文件上传表单的页面,表单需要设置`target`属性为一个`iframe`的ID,这样提交后会把结果加载到`iframe`中,而不会刷新整个页面。例如: ```html ...

    iframe实现异步无刷新提交

    4. **处理结果**:在`load`事件的回调函数中,可以读取`iframe`的`contentDocument`或`contentWindow`对象,获取服务器返回的数据,然后根据需要更新页面。 5. **错误处理**:同时,应设置错误处理机制,例如检查...

    js跨域iframepostMessage提交表单

    创建一个隐藏的iframe,将表单嵌入其中,然后在表单提交事件中指定目标为iframe,这样表单的数据就会被发送到iframe加载的URL。 2. **form表单提交**:在HTML中,可以通过设置`&lt;form&gt;`元素的`target`属性为iframe的...

    ASP.NET页面借助IFrame提交表单数据所遇到问题的解决方法分享

    首先看下面的代码片段,我们希望用户在点击页面上的Button时首先将数据提交到指定的第三方页面,然后再执行后台的Page_Load事件。 代码如下: &lt;body&gt; &lt;iframe id=”WebGatewaySubmissionProcessor_IFrame” ...

    文件上传,iframe跨域数据提交的实现

    跨域提交数据是Web应用中的一项挑战,因为同源策略限制了JavaScript对不同域名下的资源访问。然而,iframe可以通过`CORS`(跨源资源共享)策略解决这个问题。 - **iframe回调**:当iframe加载完成,即文件上传成功...

    使用iframe实现提交表单不刷新页面

    设置`&lt;form&gt;`的`target`属性为之前创建的`&lt;iframe&gt;`的名称,这样当表单提交时,数据就会发送到`&lt;iframe&gt;`而不是当前页面。同时,确保设置`method`属性为"POST"或"GET",以指定数据提交的方式。以下是一个示例: ```...

    asp.net结合html,javascript实现无刷新跨域数据提交

    通过ASP.NET结合HTML和JavaScript,我们可以实现一种无刷新跨域数据提交的方案,它利用了浏览器对iframe元素的特殊处理机制。这种方法不仅可以实现跨域数据的传递,而且避免了整个页面的刷新,从而提高了用户体验。...

    测试iframe

    `iframe`的`sandbox`属性可以增强安全性,限制`iframe`内的脚本执行、表单提交等行为。例如: ```html &lt;iframe src="http://example.com" sandbox="allow-scripts allow-same-origin"&gt;&lt;/iframe&gt; ``` 这将允许...

    iframe大全

    `iframe`可以跨越同源策略限制,实现跨域通信,如使用`window.postMessage`方法,允许父页面与`iframe`之间的数据传递。 ```javascript // 父页面向iframe发送消息 window.postMessage(data, 'http://example.com')...

    基于AdminLTE(bootstrap)用iframe实现的局部刷新的案例

    3. 在AdminLTE的其他资源中,可能还包括了提交数据的案例。通常,这会涉及到AJAX请求,将数据发送到服务器,然后根据返回的结果更新iframe内容。例如,使用jQuery的AJAX方法: ```javascript $.ajax({ type: '...

    Adminlte(bootstrap)iframe版本

    同时,对于表单提交,可能也采用了类似的方式,通过JavaScript异步发送POST请求,实现无刷新的交互。 此外,由于提到"还有使用js刷新的案例在我另外的资源里",我们可以推测这个压缩包可能只是整体项目的一部分,...

    ajax(iframe)无刷新提交表单、上传文件

    这是因为在XmlHttpRequest的send()方法中,不允许提交数据类型为multipart/form-data的表单。但是,通过将表单提交到一个隐藏的iframe,可以绕开这个限制。目标iframe可以是同一个页面上的iframe或者另一个页面上的...

    iframe实现页面局部刷新操作

    表单提交后,数据会发送到`upload.php`,而页面不会刷新。 在服务器端,PHP负责接收和处理上传的文件。`upload.php`需要检查文件类型、大小等,确保安全,然后将文件保存到服务器上。例如: ```php $target_dir =...

    unigui_网页iframe交互_完善_03

    这可以通过JavaScript的`window.postMessage`方法实现,Unigui应用发送消息到IFrame,IFrame接收到消息后进行相应处理,反之亦然。确保通信的安全性,需要正确设置`message`事件的源(source)和目标(target)。 2...

Global site tag (gtag.js) - Google Analytics