AJAX(Asynchronous Javascript And XML)翻譯成中文就是「異步Javascript和XML」。即便用Javascript語言與服務器進行異步交互,傳輸的數據爲XML(固然,傳輸的數據不僅是XML,如今更多使用json數據)。html
AJAX除了異步的特色外,還有一個就是:瀏覽器頁面局部刷新;(這一特色給用戶的感覺是在不知不覺中完成請求和響應過程)。前端
需求:在企業中寫增刪改查通常就兩類,一類是一點添加刪除修改都是跳轉到新的url來作(form表單)。另一類就是基於ajax來作的。jquery
註冊一個帳戶ajax
一點註冊這個按鈕彈出一個框讓用戶填寫用戶名、密碼、選擇男女、下拉框選擇城市等等。數據庫
(若是輸入都是正確的應該增長,若是填寫的不正確頁面上應該進行錯誤提示)django
填寫完全部信息一點註冊,數據傳送到後臺作添加,添加成功以後頁面刷新。json
注意:bootstrap
若是是form表單,一點提交,頁面會直接刷新,看不到彈出框的錯誤提示信息。瀏覽器
Ajax向後臺提交數據,悄悄的向某個url發送請求。前端框架
怎麼用jquery級別的ajax:
第一步下載jquery並引入:
第二步指定url、指定發送形式、指定發送的數據
$.ajax({ url:'', //寫url地址 type:'', //寫GET或POST data:{}, //寫向後臺要提交的數據,格式是字典形式
success:function(data){
//回調函數,當向後臺發了一個請求,後臺處理完而且返回了一段結果的時候這個函數自動執行。
//data,後臺返回的數據
}
})
若是是GET請求ajax會自動把數據內容追加到url路徑上發過去
若是是POST請求ajax會自動把數據內容放到請求體裏面發過去
ajax向後臺提交數據的語法就是這麼寫的,我以爲難點在於:
例子中用了
def add_book(request): res = {'status': '200', 'msg': None} return JsonResponse(res)
在前端頁面裏將json字符串轉換成字典的方法: 相似於Python中的json.loads()
dic = JSON.parse(data); #data是json格式的字符串
在前端頁面裏將字典轉換成字典json字符串的方法: 相似於Python中的json.dumps()
dic = {'k1':'v1','k2':'v2'} str = JSON.stringify(dic)
模態對話框適合ajax。
在頁面上搞點事情,日後臺發送數據。
由於ajax是jquery封裝了一下。因此在html文件裏須要導入它。
後臺返回的不多是個頁面,
咱們先看form表單提交數據:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>form表單提交數據</title> </head> <body> <form action="/login1/" method="post"> {% csrf_token %} <p>用戶名:<input type="text" name="name"></p> <p>密碼:<input type="password" name="pwd"></p> <input type="submit" value="提交"> </form> </body> </html>
from django.shortcuts import render # Create your views here. def login1(request): if request.method == 'GET': return render(request,'login1.html')
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), ]
ajax提交json格式數據:
在前端頁面裏將字典轉換成字典json字符串: 相似於Python中的json.dumps()
$.ajax({ url: '/add_book/', type: 'post', data: JSON.stringify(要傳遞的字典格式數據), success: function (data) { })
ajax反序列化
在前端頁面裏將json字符串轉換成字典的方法: 相似於Python中的json.loads()
$.ajax({ url: '/add_book/', type: 'post', data: {}, dataType:'JSON', #會將後臺傳的json字符串轉換成字典 success: function (data) { } })
$.ajax({ url: '/add_book/', type: 'post', data: {}, success: function (data) { //將後臺傳的json字符串轉換成字典 var dic = JSON.parse(data); } })
111