Ajax
Ajax简介
Ajax(Asynchronous Javascript And XML) 异步的 Jacascript 和 XML ,即使用 Jacascript 语言与服务器进行异步交互. 传输的数据为XML (当然,传输的数据更多使用 json数据).
AJAX 最大的优点是不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容.
AJAX 不需要任何浏览器组件, 但需要用于允许 JavaScript 在浏览器上执行.
AJAX 异步提交,局部刷新.
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
- 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
- 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
Ajax的实现
原生js实现ajax
views.py
def register(request): if request.method == "POST": print(request.POST) name = request.POST.get('registerUsername') is_exist = UserInfo.objects.filter(username=name) if is_exist: return HttpResponse("用户名已经被注册") else: return HttpResponse("用户名可以被注册") return render(request,'register.html')
js
{# ajax 弹窗#} <script> var b2 = document.getElementById("register-username"); b2.onblur = function () { // 创建远程 XML 对象 var xmlHttp = new XMLHttpRequest(); // 提交地址 xmlHttp.open("POST", "/register/", true); // 设置请求头 xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 取到输入数据 var userdata = b2.value; console.log(userdata) // 发送数据 xmlHttp.send('registerUsername=' + userdata); // 回调函数 当请求收到后端的相应之后 xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState === 4 && xmlHttp.status === 200) { alert(xmlHttp.responseText); } }; }; </script>
jQuery实现JAAX
// ajax版本 <script> $('#register-username').on('blur', function () { // 找到 id 绑定方法 $.ajax({ // 调用 ajax url: '/register/', // 发送请求路径 type: 'POST', // 请求方法 data: { // 发送的数据 'registerUsername':$('#register-username').val(), }, success: function (res) { // 请求成功后要做的事情 alert(res) }, error: function (err) { // 请求失败后要做的事情 alert(err) } }) }) </script>
AJAX请求如何设置csrf_token
方法1
$.ajax({ url: "/cookie_ajax/", type: "POST", data: { "username": "Q1mi", "password": 123456, "csrfmiddlewaretoken": $("[name = 'csrfmiddlewaretoken']").val() // 使用jQuery取出csrfmiddlewaretoken的值,拼接到data中 }, success: function (data) { console.log(data); } })
方法2
$.ajax({ url: "/cookie_ajax/", type: "POST", headers: {"X-CSRFToken": $.cookie('csrftoken')}, // 从Cookie取csrftoken,并设置到请求头中 data: {"username": "Q1mi", "password": 123456}, success: function (data) { console.log(data); } })
AJAX上传文件
XMLHttpRequest 是一个浏览器接口,通过它,我们可以使得 Javascript 进行 HTTP (S) 通信。XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式。2008年 2 月,XMLHttpRequest Level 2 草案提出来了,相对于上一代,它有一些新的特性,其中 FormData 就是 XMLHttpRequest Level 2 新增的一个对象,利用它来提交表单、模拟表单提交,当然最大的优势就是可以上传二进制文件。下面就具体
首先看一下formData的基本用法:FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台。只需要把 form 表单作为参数传入 FormData 构造函数即可:
<script src="{% static 'jquery-3.5.1.js' %}"></script> <script> $('#btn').click(function () { var formData = new FormData(); {#formData.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val());#} formData.append("files",$('#files')[0].files[0]); $.ajax({ url: "/upload/", type: "POST", processData: false, contentType: false, data: formData, success:function (data) { alert(data) } }) }) </script>
作者:闫世成
出处:http://cnblogs.com/yanshicheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。