AJAX异步加载
异步加载例子,注释描述
定义
局部刷新技术,不需要整个网页刷新。
AJAX是一种异步的客户端和服务端进行交换数据的方法,表现是不重新加载页面的情况下,后台与服务器进行了数据交互,再部分的更新页面。
jQuery框架ajax使用
html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <!DOCTYPE html> {% load static %} <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}"> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="{% static 'js/login.js' %}"></script> <body> <div class="container"> <h2>登录</h2> <form method="post" id="login-form"> {% csrf_token %} <label for="username">用户名:</label> <input type="text" id="username" name="username" > <label for="password">密码:</label> <input type="password" id="password" name="password" > <input type="submit" value="登录"> </form> </div> </body> </html>
|
Django的templates格式文件。
js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| $(document).ready(function() { $("#login-form").submit(function(event) { event.preventDefault(); var username = $("#username").val(); var password = $("#password").val(); $.ajax({ url: '../login_post_view', type: 'POST', data: { 'username': username, 'password': password }, success: function(data) { var message = data.Success; if (username == "" || password == ""){ alert("用户名密码不能为空"); }else{ if (message == "0") { alert("用户名密码错误"); } else { alert("登录成功"); window.location.href = "../index_view"; } } }, error: function(xhr, status, error) { console.log("AJAX请求出错:"); console.log("状态码:" + xhr.status); console.log("状态消息:" + xhr.statusText); console.log("错误信息:" + error); } }); }); });
|
后台数据(Django为例)
1 2 3 4 5 6 7 8 9 10 11 12
| def login_post_view(request): message = {"Success": ""} username = request.POST.get("username") password = request.POST.get("password") try: my_user = MyUser.objects.get(username=username, password=password) message["Success"] = "1" request.session["user_name"] = username except MyUser.DoesNotExist: message["Success"] = "0" return JsonResponse(message)
|
返回json数据。前端接受Success的值