DJANGO环境搭建:

目录文件:

关闭CSRF

添加目录文件路径

配置url

视图配置:

index页面配置:

测试:(成功)


进入正题:

ajax 通过GET提交数据至后台:  

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{# get请求:#}
<a class="tj" onclick="a1()">提交</a>
<a class="tj" onclick="a2()">提交</a>
<script src="/static/js/jquery-1.12.4.min.js"></script>
<script>
{#第一种依赖jquery方式#}
function a1() {
$.ajax(
{
url:'/aj1.html',
type:'GET',
data:{'p':123},
{#回调函数#}
success:function (arg) {
}
})
}
{#第二种原生DOM发送 不依赖jquery#}
function a2() {
var xhr = new XMLHttpRequest();
xhr.open('GET','/aj1.html?p=321');
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
{#这里readystate是一个状态码:有0,1,2,3,4,其中4是页面加载完成后执行#}
console.log(xhr.responseText);
}
};
xhr.send(null);
}
</script>
</body>
</html>

除了index页面修改以外其他配置都不需要修改

测试结果:

ajax 通过POST提交数据至后台: 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{# get请求:#}
<a class="tj" onclick="a1()">提交</a>
<a class="tj" onclick="a2()">提交</a>
<script src="/static/js/jquery-1.12.4.min.js"></script>
<script>
{#第一种依赖jquery方式#}
function a1() {
$.ajax(
{
url:'/aj1.html',
type:'POST',
data:{'p':123},
{#回调函数#}
success:function (arg) {
}
})
}
{#第二种原生DOM发送 不依赖jquery 注意!! django框架 默认需要添加请求头#}
{#发送数据不在是在url里,而是在最后的send里面发送数据#}
function a2() {
var xhr = new XMLHttpRequest();
xhr.open('POST','/aj1.html');
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
console.log(xhr.responseText);
}
};
{#django 默认需要请求头,才能解析数据,所以需要加请求头#}
xhr.setRequestHeader('Content-type',"application/x-www-form-urlencoded");
{#send为POST 数据#}
xhr.send("p=321");
}
</script>
</body>
</html>

除了index页面修改以外其他配置都不需要修改

测试结果:

伪ajax 提交数据至后台(一般方式,有依赖jquery): 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#伪ajax请求 iframe + form 标签绑定方式#} {#知识点!!!#}
{#标签绑定事件 传递(this)这个值是 函数内this代表标签本身,若不传递this则代表windows类#}
{#DOM/jquery绑定事件 不需要传递this这个参数,绑定事件本身就是this,在函数内this代表标签本身#} {#GET/POST 提交方式取决于form表单 提交的method参数#} {#GET提交#}
{#html代码开始#}
<iframe id="p11" name='ifr' style="width: 100%;height:300px;display: block" onload="a2(this)"></iframe>
<form class='form_1' method="GET" action="/aj1.html" target="ifr">
<input type="text" class="in" name="p" value="123">
<input type="submit" onclick="a1()" value="提交">
</form>
{#html代码结束#} {#POST提交#}
{#html代码开始#}
{#<iframe id="p11" name='ifr' style="width: 100%;height:300px;display: block" onload="a2(this)"></iframe>#}
{#<form class='form_1' method="POST" action="/aj1.html" target="ifr">#}
{#<input type="text" class="in" name="p" value="123">#}
{#<input type="submit" onclick="a1()" value="提交">#}
{#</form>#}
{#html代码结束#} <script src="/static/js/jquery-1.12.4.min.js"></script>
<script>
function a1() {
$('.form_1').submit()
};
function a2(self) {
//DOM方式
console.log(self.contentWindow.document.body.innerText);
//jquery方式
console.log($(self).contents().find('body').html());
};
</script>
</body>
</html>

测试结果:(GET提交)

伪ajax 提交数据至后台(进阶方式,建议这种方式,不依赖jquery 兼容性高) 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#伪ajax请求 iframe + form DOM绑定方式 建议这种方式,不依赖jquery 兼容性高#}
<iframe id="p11" name='ifr' style="width: 100%;height:300px;display: block"></iframe>
<form id='f1' method="GET" action="/aj1.html" target="ifr">
<input type="text" class="in" name="p" value="123">
<button onclick="a1()">提交</button>
</form>
<script>
function a1() {
document.getElementById('p11').onload = a3;
document.getElementById('f1').submit()
};
function a3() {
console.log(this.contentWindow.document.body.innerText);
obj = JSON.parse(this.contentWindow.document.body.innerText);
console.log(obj);
console.log(typeof obj);
};
</script>
</body>
</html>

测试结果:(GET提交)

前端 - js方式Ajax/ jquery方式Ajax / 伪 ajax /伪ajax 进阶方式的更多相关文章

  1. Ajax&jQuery教案总结

    Ajax&jQuery教程总结 目录 第一章 Ajax入门 6 第1讲 传统表单提交存在的问题 6 课程内容 6 1. 问题的引入 6 2. 问题的解决 6 参考进度(0.5课时) 7 第2讲 ...

  2. 图片轮播(淡入淡出)--JS原生和jQuery实现

    图片轮播(淡入淡出)--js原生和jquery实现 图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成j ...

  3. 前端向服务器请求数据并渲染的方式(ajax/jQuery/axios/vue)

    原理: jQuery的ajax请求:complete函数一般无论服务器有无数据返回都会显示(成功或者失败都显示数据): return result

  4. MVC中处理表单提交的方式(Ajax+Jquery)

    MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...

  5. JS原生对象实现异步请求以及JQ的ajax请求四种方式

    一.JS原生方式异步请求 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="A ...

  6. ajax下载,前端js下载(转)

    前面一直做过下载的功能.就是后台将文件流写入response里面,然后就好了.前台会自动弹出下载提示等. 今天打算做一个ajax下载.想当然的结果死活浏览器没反应.我擦. 然后浏览器调试,发现resp ...

  7. 2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端传输数据编码格式contentType 批量插入数据和自定义分页器 一.MVC与MTV MVC(Model View Controller ...

  8. jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)

    最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...

  9. koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求

    koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...

随机推荐

  1. jenkins--使用命令行自动启动Jenkins的job

    Jenkins作为持续集成强大的开源工具,除了使用界面它还有强大的cli命令. 1 自动启动jenkins 的job: 启动不带参数的job: curl --user USER:PASSWORD JE ...

  2. Codeforces Round #394 (Div. 2) C. Dasha and Password

    C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. day27 多继承 super 详细用法

    # 没有使用super的时候的多继承,如果父类的名字变了.或者有什么更改,需要全部都一起改 class FooParent: def bar(self, message): print(message ...

  4. adb 命令 链接 安装应用

    adb connect 192.168.11.1:5555(可省略) adb kill-server  杀掉服务 adb install xxx.apk

  5. Word Ladder - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Word Ladder - LeetCode 注意点 每一个变化的字母都要在wordList中 解法 解法一:bfs.类似走迷宫,有26个方向(即26个字 ...

  6. 【AGC005F】简单的问题 Many Easy Problems

    Description 链接 Solution 对于每个\(k\),统计任选\(k\)个点作为关键点的"最小生成树"的大小之和 正向想法是枚举或者计算大小为\(x\).叶子数目为\ ...

  7. Zabbix监控mysql主从(二)

    二.Zabbix-server-web端配置 1:创建一个监控项作为mysql主从     2.创建mysql主从监控图形 三.创建触发器,实现主从异常报警 测试: [root@mysql-slave ...

  8. happens-before

    happens-before是JMM最核心的概念.对应Java程序员来说,理解happens-before是理解JMM的关键. JMM的设计 首先,让我们来看JMM的设计意图.从JMM设计者的角度,在 ...

  9. Android log 方法

    package test; public abstract class Logger { private static Class<? extends Logger> mLoggerCla ...

  10. 【POJ3585】Accumulation Degree 二次扫描与换根法

    简单来说,这是一道树形结构上的最大流问题. 朴素的解法是可以以每个节点为源点,单独进行一次dp,时间复杂度是\(O(n^2)\) 但是在朴素求解的过程中,相当于每次都求解了一次整棵树的信息,会做了不少 ...