iframe实现伪ajax

数据提交的两种方式:

Form

Ajax

Ajax提交数据的方法:

JS实现
Jquery
“伪”Ajax

  

"伪"Ajax:

iframe+from实现

  

示例程序:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% load staticfiles %}
<style> </style>
</head>
<body>
<!--window.location,reload-->
<script src="{% static '/js/jquery/jquery-3.3.1.js' %}"></script> <!--引入jquery库。必须放在js文件最前面,避免子模板出现$is not defined问题--> <iframe id="iframe" name="ifra" ></iframe>
<form id="fm" method="POST" action="/ajax.html/" target="ifra">
{% csrf_token %}
<p>用户名:<input type="text" name="user" ></p>
<p>密码:<input type="password" name="password"></p>
<a onclick="ajaxsubmit();">提交</a>
</form>
<script>
<!--#当点击a标签的时候给iframe标签绑定onload事件,这时不需要传递this参数-->
<!--this把iframe标签本身传进去-->
<!--onload为当数据返回回来自动执行-->
function ajaxsubmit(){
document.getElementById('iframe').onload=reloadIframe;
document.getElementById('fm').submit();
}
function reloadIframe()
{
<!--#此时this =当前标签-->
console.log(this);
console.log(this.contentWindow.document.body.innerHTML); <!--this.contentWindow是进入了另一个html文档-->
<!--this.contentWindow.document.body拿到另一个文档的body元素-->
<!--this.contentWindow.document.body.innerHTML拿到另一个body元素下的HTML内容-->        
var content=console.log($(this).contents().find('body').html());
<!--var obj=JSON.parse(content);-->
}
</script>
</body>
</html>

 

分析:

1."伪"Ajax使用from与iframe实现,注意iframe的name属性和from的target属性的值相同。
2.这里给a标签进行绑定事件,在a标签的事件里给iframe标签绑定事件。
3.iframe绑定的事件为onload,当服务端返回数据的时候,事件才会执行。
4.reloadIframe为iframe的事件函数,当数据返回,肯定要从iframe标签下拿到返回的数据。
5.这里this指当前标签,为iframe标签,注意,不需要人为传递this,如果绑定事件的方式为onload="reloadIframe(this);" function reloadIframe{//具体代码};则需要传递this
6.获取iframe里服务端返回的数据:
普通方法:this.contentWindow.document.body.innerHTML
Jquery:$(this).contents().find('body').html()
7.如果是json数据,需要进行反序列化
JSON.parse(content)
注意:这里为post的方式,get方式:method="GET"

  

视图函数: 

def ajax(request):
v1=request.POST
v2=request.GET
print(v1)
print(v2)
if request.method=="POST":
return HttpResponse(v1['user']+v1['password'])
else:return render(request,"ajax.html")

  

iframe实现伪ajax的更多相关文章

  1. Ajax-02 iframe实现伪“Ajax”

    需求: 用户输入URL,使用iframe将目标URL的内容加载到页面指定位置(局部刷新) <!DOCTYPE html> <html lang="en"> ...

  2. tornado之文件上传的几种形式form,伪ajax(iframe)

    1直接form提交给后台处理 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. 一个伪ajax图片上传代码的例子

    一个伪ajax图片上传实现代码. 复制代码代码如下: <?php  if($_FILES){  ?>  <script>  window.parent.ajaxUploadPi ...

  4. 伪ajax上传文件

    伪ajax上传文件   最近在折腾伪ajax异步上传文件. 网上搜索了一下,发现大部分方法的input file控件都局限于form中,如果是在form外的呢? 必须动态生成一个临时form和临时if ...

  5. 手动(原生ajax)和自动发送ajax请求 伪ajax(Ifrname)

    自动发送  ---> 依赖jQuery文件 实例-->GET请求: function AjaxSubmit() { $.ajax({ url:'/data', type:"GET ...

  6. 33)django-原生ajax,伪ajax

    一:概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作 ...

  7. 前端 - js方式Ajax/ jquery方式Ajax / 伪 ajax /伪ajax 进阶方式

    DJANGO环境搭建: 目录文件: 关闭CSRF 添加目录文件路径 配置url 视图配置: index页面配置: 测试:(成功) 进入正题: ajax 通过GET提交数据至后台: <!DOCTY ...

  8. 伪AJAX

    <h3>3,伪ajax</h3> <h6>学习iframe(嵌套别人家网站的)</h6> <div> <input id=" ...

  9. 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)

    一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...

随机推荐

  1. R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列

    就是想保存下来,没有其他用意 原博文:http://blog.csdn.net/qq_26898461/article/details/53467968 3. 空间定位与检测     参考信息< ...

  2. setenforce: SELinux is disabled解决办法

    如果在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled 那么说明selinux已经被彻底的关闭了 如果需要重新开启s ...

  3. 图书管理系统(无中间件,用装饰器的)-----未基于FORM组件

    目的:实现图书的增删改查 models.py from django.db import models # Create your models here. class Book(models.Mod ...

  4. cf1084d 非常巧妙的树形dp

    /* 给定n城市,m条道路,每条路耗油w,每个点有油a[i],从任意点出发,求最大可以剩下的油 dp[i]表示从i开始往下走的最大收益,ans表示最大结果 因为走过的路不能走,所以可以想到最优解肯定经 ...

  5. Nginx详解七:Nginx基础篇之Nginx官方模块

    Nginx官方模块 --with-http_stub_status_module:Nginx的客户端状态,用于监控连接的信息,配置语法如下:配置语法:stub_status;默认状态:-配置方法:se ...

  6. linux更好看的top界面htop

    top命令界面 性能测试时会经常用到top命令百用百顺就是样式不太美,下面介绍htop一个看起来更漂亮的top界面 安装htop yum install htop 安装完成键入htop命令,这样看起来 ...

  7. C++ Primer 笔记——转发

    某些函数需要将其一个或多个实参连同类型不变的转发给其他函数,这种情况下我们需要保持被转发实参的所有性质,包括实参类型是否是const的以及实参是左值还是右值. template <typenam ...

  8. MySQL修改数据表存储引擎的3种方法介绍

    这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改.导出导入.创建插入3种方法, 可以参考下   MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引 ...

  9. 步步为营-74-Request,Response和server的其他成员

    Request 1 Request.UrlReferrer 获取请求的来源 2 Request.UserHostAddress 获取访问者的IP地址 3 Request.Cookies 获取浏览器发送 ...

  10. java用swing画可以行走的乌龟

    代码如下: import java.awt.Color;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt. ...