【JavaSE】方法過載基本使用
阿新 • • 發佈:2021-11-29
- ajax
往後臺提交資料,form表單標籤
js語言中封裝的一個傳送http請求的模組,xmlhttprequest物件,經過jquery的封裝起名為ajax
AJAX 不需要任何瀏覽器外掛,但需要使用者允許JavaScript在瀏覽器上執行。
a.同步互動:客戶端發出一個請求後,需要等待伺服器響應結束後,才能發出第二個請求;
b.非同步互動:客戶端發出一個請求後,無需等待伺服器響應結束,就可以發出第二個請求。
AJAX除了非同步的特點外,還有一個就是:瀏覽器頁面區域性重新整理
def login(request): if request.method == 'GET': # return render(request, 'login.html') ret = render(request, 'login.html') # 修改響應狀態碼 ret.status_code = 202 # return ret
ajax程式碼
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .error{ color:Red; font-size: 12px; } </style> </head> <body> <form action="" method="post"> 使用者名稱: <input type="text" name="username"> 密碼: <input type="password" name="password"> <input type="submit"> </form> <hr> 使用者名稱: <input type="text" id="uname"> 密碼: <input type="password" id="pwd"> <span class="error"></span> <button id="btn">ajax提交</button> </body> <script src="{% static 'jquery.js' %}"></script> <script> // ajax傳送請求提交資料 $('#btn').click(function () { var uname = $('#uname').val(); var pwd = $('#pwd').val(); $.ajax({ {#url:'http://127.0.0.1:8001/ajax_login/', // 請求路徑 絕對路徑 #} url:'/ajax_login/', // 請求路徑 相對路徑 type:'post', // 請求方法,小寫 {#data:{a:1,b:2}, // 請求攜帶資料#} data:{username:uname, password:pwd}, // 接受請求成功之後的響應資料的,res接受到的就是響應資料, // ajax會判斷響應狀態碼,當狀態碼為2xx,3xx等時,那麼表示請求和響應是正常的,那麼ajax會將響應資料進行加工,並傳遞給success對應的匿名函式作為他的引數,也就是我們下面定義的res形參 success:function (res) { console.log('success>>>>',res); {#alert('登入成功!!!!恭喜恭喜!!!');#} location.href = '/home/' //訪問home路徑,使用的瀏覽器的機制 //if (res === 'okk'){ // alert('登入成功!!!!恭喜恭喜!!!'); //}else { // $('.error').text('使用者名稱或者密碼有誤!!!'); //} }, // 當狀態碼為4xx(請求錯誤),5xx(服務端錯誤)等時,那麼ajax會加工響應資料並傳遞給error對應的函式 error:function (error) { console.log('error>>>>',error); if (error.status === 400){ alert('使用者名稱或者密碼有誤!!'); {#$('.error').text('使用者名稱或者密碼有誤!!!');#} } } }); }) </script> </html>
檢視程式碼
from django.shortcuts import render, redirect, HttpResponse # Create your views here. def login(request): if request.method == 'GET': # return render(request, 'login.html') ret = render(request, 'login.html') # 修改響應狀態碼 # ret.status_code = 202 # return ret else: print(request.POST) username = request.POST.get('username') password = request.POST.get('password') if username == 'root' and password == '123': return render(request, 'home.html') return redirect('/login/') # 預設使用的狀態碼就是302 def ajax_login(request): if request.method == 'GET': return render(request, 'login.html') else: print('ajax>>>>>', request.POST) # ajax>>>>> <QueryDict: {'username': ['xxx'], 'password': ['ooo']}> username = request.POST.get('username') password = request.POST.get('password') if username == 'root' and password == '123': # HttpResponse預設狀態碼為200 return HttpResponse('okk') # return render(request, 'home.html') # return redirect('/login/') else: ret = HttpResponse('not ok') ret.status_code = 400 return ret def home(request): return render(request, 'home.html')
urls.py
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^ajax_login/', views.ajax_login), url(r'^home/', views.home), ]