`

Iframe实现的ajax如何实现POST请求?

阅读更多

     曾经看到有人用iframe来实现AJAX,我想了一下,用Iframe怎么实现POST请求呢?想了一个办法,不知道行不行,就是在iframe里面加载一个form页面,parent页面只要把参数设置到这个form的input里面,然后提交表单。这样iframe就可以提交POST请求,返回结果页面了。接下来,只要在结果页面里面调用parent.xxx就可以把结果传递给调用者了。也可以监听iframe.onload事件,然后直接调用iframe里面的结果页面的函数。

 

page A(parent page)

 

function request(url, value, method){

         var oIframe = document.getElementById("myframe");

         var oDoc = oIframe.contentWindow || oIframe.contentDocument;
         if (oDoc.document) {
             oDoc = oDoc.document;
         }

         oIframe.onload=function(){

             alert(oDoc.getElementById("result"));

         }

 

         var form = oDoc.forms[0];

         form.action=url;

         form.method = method;

         form["value"]=value;

 

        form.submit();

}

 

function setResult(rst){

       alert(rst);

}

 

<iframe src="form_page" id="myframe" style="display:none;"/>

 

page B (form_page)

<form action="#" method="post"><input type="text" value="" name="value"/></form>

 

page c1 (Result page 1: parent page get result on it's own initiative )

<div id="result">Success</div>

 

page c2 (Result page 2: result page in iframe give the result back to parent page)

<script>parent.setResult("success")</script>

分享到:
评论

相关推荐

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

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

    iframe使用post数据方式显示

    ajax使用post请求返回页面,直接将返回的页面数据放入iframe标签中,具体实现不在此讨论,本文实现form表单,利用form表单的post请求方式实现提交数据加载iframe

    AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求

     本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对几种方法作了简要的介绍。  iframe、JS创建动态脚本这两种方法,需要开发者能控制两个域,两端都要编写相应的代码,...

    HTML5中使用postMessage实现Ajax跨域请求的方法

    由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等。 常规的几种解决方法: (1) document.domain+iframe;...假如使用phonegap开发,就可以将请求文件安装在客户端

    ajax-panel:用于Grafana的Ajax面板插件

    AJAX Grafana面板 AJAX面板是将外部内容加载到grafana仪表板的一般方法。... GET或POST或iframe 网址: 要求的网址 参数: 将在请求中传递的参数。 这是一个可以访问变量的javascript对象: ctrl控制对象。 屏幕截图

    bifrost:即使不支持FormData,File API和XMLHttpRequest,使用iframe异步发送文件和数据的jQuery Ajax传输

    ajax ( { url : 'path/to/asgard' , method : 'POST' , dataType : 'iframe json' , data : { title : 'Lorem ipsum' , description : 'Some data...' } , fileInputs : $ ( 'input[type="file"]' )} ) ....

    AJAX的阻塞及跨域名解析

    阻塞的AJAX请求 我们先来证实一下请求的阻塞情况吧。我们使用如下的代码:连续发起三个请求 function simpleRequest(){ var request = new XMLHttpRequest(); request.open(“POST”, “Script.ashx”); request...

    JavaScript实现图片伪异步上传过程解析

    首先要知道, ajax无法发送带有文件的post请求所以,所以还是要用同步的方式,但是刷新的时候,我们不要在原来的页面刷新,去一个隐藏的iframe里面刷新,form表单中action正常填写处理文件上传的操作。紧着着的...

    vue.js 使用axios实现下载功能的示例

    浏览器的GET(frame、a)和POST(form)请求具有如下特点: response会交由浏览器处理 response内容可以为二进制文件、字符串等 Ajax请求具有如下特点: response会交由Javascript处理 response内容仅可以为字符串 因此...

    Python Web框架之Django框架文件上传功能详解

    – 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及url添加(略过) 3,views视图函数 form的视图收到了在request.FILES中的文件数据。从上述form来的数据...

    有关文件上传 非ajax提交 得到后台数据问题

    根据id获得表单数据然后发送ajax请求,获得后台返回数据,处理数据,完美。 但是如果需要上传文件,  请选择文件:  &lt;td&gt;&lt;input type= class=easyui-filebox id=fileImport name=file value=

    Web前端优化

    4. 使得 Ajax 可缓存 (Make Ajax Cacheable) 5. 延迟载入组件 (Post-load Components) 6. 预载入组件 (Preload Components) 7. 减少 DOM 元素数量 (Reduce the Number of DOM Elements) 8. 切分组件到多个域 (Split ...

    js实现跨域的4种实用方法原理分析

    js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。 要解决...

    PlayingWithAJAX:一些方便的AJAX技术的演示:books:

    玩AJAX 一些有用的AJAX技术的演示 ...对POST请求执行相同操作的过程 从CSV文件读取 更新下拉选项作为响应 定期刷新 从服务器获取JSON 解析收到的JSON 修改JSON并更新对服务器的更改 设置请求超时 引入指数回退模式

    AJAX javascript的跨域访问执行

    突然感觉就是这里的问题,研究一下,搞定后其实觉得挺容易的,只是自己知识还是有些欠缺,解决方法如下:阻塞的AJAX请求 我们先来证实一下请求的阻塞情况吧。我们使用如下的代码: 连续发起三个请求 代码如下:...

    crossdomain-xhr

    简单性-维护用于调用Ajax请求的标准jQuery Ajax API签名模型。 没有外部依赖性-纯香草JS。 能够在CORS或PostMessage之间进行选择。 浏览器对PostMessage的支持已充分介绍。 == 安装 从Bower获取 bower install -...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 recv与recvfrom的区别及基于udp实现ntp服务 08 基于tcp实现远程执行命令 09 基于tcp实现远程执行命令测试结果 10 粘包现象 11 粘包解决方法 第31章 01 上节课复习 02 socketserver实现并发 03 socketserver模块...

    谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向。以一个简单的demo做说明:  html如下所示,请求的路径action为”upload”,其它的不做任何处理: &...

    javascript异步编程

    就好像排队,前面的人忙着忙着突然上厕所了,后面的人阻塞在这里,因此我们就需要让前面的人死到一边去,让后面的人跟进……AJAX就是这个概念,请求还在继续,但我们还可以做其他事。 javascript中实现这个功能的是...

    浅谈js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。 ...

Global site tag (gtag.js) - Google Analytics