AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。
- 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
- 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
1. 描述: 制作简单的加法运算体现Ajax简单小案例,实现后台自动运算,页面不刷新
【Ajax基本格式】
$.ajax({ url: "", // 提交的地址url type: "", // 请求方式 success: function(){ // 回调函数 pass } })
2. Django定义url,定义页面访问
from django.contrib import admin from django.urls import path,re_path from app1 import views urlpatterns = [ path('book/index1/', views.index1), ]
3. 定义views跳转
def index1(request): return render(request, "index1.html")
【index.html】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3"> <button id="btn1">计算</button> <script src="/static/js/jquery.js"></script> <script> </body> </html>
【页面访问】
4. 配置Ajax
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3"> <button id="btn1">计算</button> <script src="/static/js/jquery.js"></script> <script> $("#btn1").click(function () { // 1. 获取页面的数据 var num1 = $("#i1").val(); var num2 = $("#i2").val(); {#console.log(num1, num2);#} // 2. 发送ajax请求 $.ajax({ url: "/ajax_sum/", type: "post", data: { num1: num1, num2: num2, }, success: function (data) { // 3. 获取响应结果 console.log(data); $("#i3").val(data.msg); // 4. 实现页面的局部刷新 } }) }); </script> </body> </html>
5. 配置Ajax请求路径
from django.contrib import admin from django.urls import path,re_path from app1 import views urlpatterns = [ path('book/index1/', views.index1), path('ajax_sum/', views.ajax_sum) ]
6. 配置Ajax ,views请求
def ajax_sum(request): num1 = request.POST.get("num1") num2 = request.POST.get("num2") ret = {'status': 1, "msg": None} # print(type(num1), num2) total = int(num1) + int(num2) ret['msg'] = total # return HttpResponse(total) return JsonResponse(ret)
7. 测试Ajax,随意输入数字相加,页面不刷新,后台自动运算返回页面
【请求流程】