<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
AJAX是前端技術的集合,包括JavaScript、XML、HTML、CSS等。
提升使用者體驗。
JQuery是一個相容多種瀏覽器的JavaScript庫。
JQuery簡化JavaScript的使用,同理,簡化AJAX的使用。
線上連結
Django版本:3.0.6
JQuery版本:1.12.4
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.12.4.min.js"></script>
urls.py
from django.urls import path import Public.views urlpatterns = [ path('error/',Public.views.error), ]
views.py
from django.http import HttpResponse, request, response from django.shortcuts import redirect, render, resolve_url def error(request): if request.method == 'POST': num1 = request.POST.get('num1',0) num2 = request.POST.get('num2',0) num = int(num1)+int(num2) return HttpResponse(str(num)) #POST請求僅返回HttpResponse值 return render(request, 'error.html') #GET請求返回error.html介面
error.html #使用error介面進行測試
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.12.4.min.js"></script> </head> <body> <!-- 增加多個回車是為了明顯顯示是否會重新整理介面 --> <br> <input type="text" id="d1"> + <input type="text" id="d2"> = <input type="text" id="d3"> <button id="btn">計算</button> <!-- 新增csrf_token --> {% csrf_token %} <script> $('#btn').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url:'', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type:'post', // 不指定預設就是get,都是小寫 // 3.資料 data:{'num1':$('#d1').val(), 'num2':$('#d2').val(),'csrfmiddlewaretoken': csrf}, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success:function (args) { $('#d3').val(args) } }) }) </script> </body> </html>
輸出效果:輸入2+2,點選計算,非同步計算結果為4並返回前端
urls.py
from django.urls import path import Public.views urlpatterns = [ path('error/',Public.views.error), ]
views.py
from django.http import HttpResponse, request, response from django.shortcuts import redirect, render, resolve_url def error(request): if request.method == 'POST': num1 = request.POST.get('num1',0) num2 = request.POST.get('num2',0) num = int(num1)+int(num2) return HttpResponse(str(num)) #POST請求僅返回HttpResponse值 return render(request, 'error.html') #GET請求返回error.html介面
error.html #使用error介面進行測試
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.12.4.min.js"></script> </head> <body> <!-- 增加多個回車是為了明顯顯示是否會重新整理介面 --> <br> <input type="text" id="d1"> + <input type="text" id="d2"> = <input type="text" id="d3"> <button id="btn1">計算</button> <br> <input type="text" id="d4"> + <input type="text" id="d5"> = <input type="text" id="d6"> <button id="btn2">計算</button> <br> <input type="text" id="d7"> + <input type="text" id="d8"> = <input type="text" id="d9"> <button id="btn3">計算</button> <!-- 新增csrf_token --> {% csrf_token %} <script> $('#btn1').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url:'', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type:'post', // 不指定預設就是get,都是小寫 // 3.資料 data:{'num1':$('#d1').val(), 'num2':$('#d2').val(),'csrfmiddlewaretoken': csrf}, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success:function (args) { $('#d3').val(args) } }) }) $('#btn2').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url:'', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type:'post', // 不指定預設就是get,都是小寫 // 3.資料 data:{'num1':$('#d4').val(), 'num2':$('#d5').val(),'csrfmiddlewaretoken': csrf}, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success:function (args) { $('#d6').val(args) } }) }) $('#btn3').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url:'', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type:'post', // 不指定預設就是get,都是小寫 // 3.資料 data:{'num1':$('#d7').val(), 'num2':$('#d8').val(),'csrfmiddlewaretoken': csrf}, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success:function (args) { $('#d9').val(args) } }) }) </script> </body> </html>
輸出效果:分別輸入三組數值,點選不同的計算,非同步計算結果後根據點選的計算返回前端
urls.py
from django.urls import path import Public.views urlpatterns = [ path('error/',Public.views.error), ]
views.py
from django.http import HttpResponse, request, response from django.shortcuts import redirect, render, resolve_url def error(request): if request.method == 'POST': num1 = request.POST.get('num1',0) num2 = request.POST.get('num2',0) num = int(num1)+int(num2) return HttpResponse(str(num)) #POST請求僅返回HttpResponse值 return render(request, 'error.html') #GET請求返回error.html介面
error.html #使用error介面進行測試
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.12.4.min.js"></script> </head> <body> {% for i in '369'|make_list %} <!-- for迴圈 --> <br> <!-- 增加多個回車是為了明顯顯示是否會重新整理介面 --> <input type="text" id="d{{i|add:-2}}"> + <!-- id使用python計算 --> <input type="text" id="d{{i|add:-1}}"> = <!-- id使用python計算 --> <input type="text" id="d{{i}}"> <!-- id使用python計算 --> <button class="btn" id="btn{{i}}">計算</button> <!-- id使用python計算 --> {% endfor %} {% csrf_token %} <!-- 新增csrf_token --> <script> $('.btn').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 var btn = $(this).attr('id') //取id值 var varnum1 = "#d"+(btn.replace("btn","")-2) //取id值 var varnum2 = "#d"+(btn.replace("btn","")-1) //取id值 var varnum3 = "#d"+(btn.replace("btn","")) //取id值 var num1 = $(varnum1).val() //取id遞增序號值 var num2 = $(varnum2).val() //取id遞增序號值 var num3 = $(varnum3).val() //取id遞增序號值 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url: '', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type: 'post', // 不指定預設就是get,都是小寫 // 3.資料 data: { 'num1': num1, 'num2': num2, 'csrfmiddlewaretoken': csrf }, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success: function (args) { $(varnum3).val(args) } }) }) </script> </body> </html>
輸出效果:分別輸入三組數值,點選不同的計算,非同步計算結果後根據點選的計算返回前端
urls.py
from django.urls import path import Public.views urlpatterns = [ path('error/',Public.views.error), ]
views.py
def error(request): if request.method == 'POST': num1 = request.POST.get('num1',0) num2 = request.POST.get('num2',0) num = int(num1)+int(num2) return HttpResponse(str(num)) #POST請求僅返回HttpResponse值 return render(request, 'error.html') #GET請求返回error.html介面
error.html #使用error介面進行測試
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.12.4.min.js"></script> </head> <body onclick="click()"> {% for i in '369'|make_list %} <!-- for迴圈 --> <br> <!-- 增加多個回車是為了明顯顯示是否會重新整理介面 --> <input type="text" id="d{{i|add:-2}}"> + <!-- id使用python計算 --> <input type="text" id="d{{i|add:-1}}"> = <!-- id使用python計算 --> <input type="text" id="d{{i}}"> <!-- id使用python計算 --> <button class="btn" id="btn{{i}}">計算</button> <!-- id使用python計算 --> {% endfor %} {% csrf_token %} <!-- 新增csrf_token --> <script> $('.btn').click(function () { var csrf = $('input[name="csrfmiddlewaretoken"]').val(); //增加csrf變數將在data中傳參以避免403錯誤 var btn = $(this).attr('id') //取id值 var varnum1 = "#d" + (btn.replace("btn", "") - 2) //取id值 var varnum2 = "#d" + (btn.replace("btn", "") - 1) //取id值 var varnum3 = "#d" + (btn.replace("btn", "")) //取id值 var num1 = $(varnum1).val() //取id遞增序號值 var num2 = $(varnum2).val() //取id遞增序號值 var num3 = $(varnum3).val() //取id遞增序號值 // 朝後端傳送ajax請求 $.ajax({ // 1.指定朝哪個後端傳送ajax請求 url: '', //不寫就是朝當前地址提交【與form表單的action引數相同】 // 2.請求方式 type: 'post', // 不指定預設就是get,都是小寫 // 3.資料 data: { 'num1': num1, 'num2': num2, 'csrfmiddlewaretoken': csrf }, // 4.回撥函數:當後端給你返回結果的時候會自動觸發,args接受後端的返回結果 success: function (args) { $(varnum3).val(args) } }) }) </script> <script> document.addEventListener("mouseout", function (e) { //獲取遊標事件 var num = ($(e.target).attr('id')).replace("d", "").replace("btn", "") //獲取遊標所在元素id if (num % 3 === 0) { } else if (num % 3 === 1) { num = parseInt(num) + 2 } else if (num % 3 === 2) { num = parseInt(num) + 1 } varnum = "#btn" + num $(varnum).click() }); document.addEventListener("keydown", function (e) { //獲取按鍵事件 if ((e.keyCode == 9) || (e.keyCode == 32) || (e.keyCode == 13) || ((((e.keyCode == 83)) && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)))) { //當按鍵為Tab、Enter、Space、Ctrl+S時執行操作 var num = (document.activeElement.id).replace("d", "").replace("btn", "") //獲取所在位置元素id if (num % 3 === 0) { } else if (num % 3 === 1) { num = parseInt(num) + 2 } else if (num % 3 === 2) { num = parseInt(num) + 1 } varnum = "#btn" + num $(varnum).click() } }); </script> </body> </html>
輸出效果:值輸到哪裡,哪裡就會顯示出結果,無須點選計算按鈕
最後把計算按鈕隱藏一下
<button hidden class="btn" id="btn{{i}}">計算</button> <!-- id使用python計算 -->
本來還想做一下一鍵全部提交程式碼、輸入完成後全資料提交程式碼兩個功能,但發現這樣要提交的post值太多了,還是一次提交單個或單行資料比較靠譜
參考連結:
到此這篇關於Django中使用AJAX的文章就介紹到這了,更多相關Django使用AJAX內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45