Ajax在Django框架中简单应用1

AJAXAsynchronous Javascript And XML)翻译成中文就是异步JavascriptXML”。即使用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,随意输入数字相加,页面不刷新,后台自动运算返回页面

 【请求流程】

原文地址:https://www.cnblogs.com/NGU-PX/p/14189490.html