<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理

      Ajax

      Posted on 2023-06-28 13:13  亂了啦  閱讀(19)  評論(0)    收藏  舉報

      Ajax簡介

      異步提交
      局部刷新
      朝發送請求的方式
      1.瀏覽器地址欄直接輸入url回車                     GET請求
      2.a標簽href屬性                                    GET請求
      3.form表單                                       GET請求/POST請求
      4.ajax                                         GET請求/POST請求
       
      AJAX 不是新的編程語言,而是一種使用現有標準的新方法(比較裝飾器)
      AJAX 最大的優點是在不重新加載整個頁面的情況下,可以與服務器交換數據并更新部分網頁內容。(這一特點給用戶的感受是在不知不覺中完成請求和響應過程)
       
      小例子
      頁面上有三個input框
        在前兩個框中輸入數字 點擊按鈕 朝后端發送ajax請求
        后端計算出結果 再返回給前端動態展示的到第三個input框中
        (整個過程頁面不準有刷新,也不能在前端計算)
       
      js代碼
       
      $('#btn').click(function () {
              // 朝后端發送ajax請求
              $.ajax({
                  // 1.指定朝哪個后端發送ajax請求
                  url:'', // 不寫就是朝當前地址提交
                  // 2.請求方式
                  type:'post',  // 不指定默認就是get 都是小寫
                  // 3.數據
                  {#data:{'username':'jason','password':123},#}
                  data:{'i1':$('#d1').val(),'i2':$('#d2').val()},
                  // 4.回調函數:當后端給你返回結果的時候會自動觸發 args接受后端的返回結果
                  success:function (args) {
                      {#alert(args)  // 通過DOM操作動態渲染到第三個input里面#}
                      {#$('#d3').val(args)#}
                      console.log(typeof args)
      
                  }
              })
          })
      小結
       
      當你在利用ajax進行前后端交互的時候
      后端無論返回什么都只會被回調函數接受 而不再影響這個瀏覽器頁面了
      結論:寫ajax的時候 你可以直接將dataType參數加上 以防萬一 或者后端就用JsonResonse
       
      前后端傳輸數據的編碼格式(contentType)
        主要研究post請求數據的編碼格式
      • get請求數據就是直接放在url后面的
      • url?username=jason&password=123
      可以朝后端發送post請求的方式
      1.form表單
      2.ajax請求
       
      前后端傳輸數據的編碼格式
      urlencoded

      formdata

      json
      研究form表單
      • 默認的數據編碼格式是urlencoded
      • 數據格式:username=jason&password=123
      • django后端針對符合urlencoded編碼格式的數據都會自動幫你解析封裝到request.POST中
      • username=jason&password=123 >>> request.POST
      • 如果你把編碼格式改成formdata,那么針對普通的鍵值對還是解析到request.POST中而將文件解析到request.FILES中
      • form表單是沒有辦法發送json格式數據的

       

      研究ajax
      • 默認的編碼格式也是urlencoded
      • 數據格式:username=jason&age=20
      • django后端針對符合urlencoded編碼格式的數據都會自動幫你解析封裝到request.POST中
      • username=jason&age=20 >>> request.POST

       

      ajax發送json格式數據
      • django針對json格式的數據 不會做任何的處理
      • request對象方法補充
      • request.is_ajax()
      • 判斷當前請求是否是ajax請求 返回布爾值

      js代碼

       

          $('#d1').click(function () {
              $.ajax({
                  url:'',
                  type:'post',
                  data:JSON.stringify({'username':'jason','age':25}),
                  contentType:'application/json',  // 指定編碼格式
                  success:function () {
                  }
              })
          })
      

       

      后端  

       

      第一種方式
           json_bytes = request.body json_str = json_bytes.decode('utf-8') json_dict = json.loads(json_str) 第二種 # json.loads括號內如果傳入了一個二進制格式的數據那么內部自動解碼再反序列化 json_dict = json.loads(json_bytes)

       

      ajax發送json格式數據需要注意點
      • 1.contentType參數指定成:application/json
        2.數據是真正的json格式數據
        3.django后端不會幫你處理json格式數據需要你自己去request.body獲取并處理
      ajax發送文件

       

      ajax發送文件需要借助于js內置對象FormData
       
          // 點擊按鈕朝后端發送普通鍵值對和文件數據
          $('#d4').on('click',function () {
              // 1 需要先利用FormData內置對象
              let formDateObj = new FormData();
              // 2 添加普通的鍵值對
              formDateObj.append('username',$('#d1').val());
              formDateObj.append('password',$('#d2').val());
              // 3 添加文件對象
              formDateObj.append('myfile',$('#d3')[0].files[0])
              // 4 將對象基于ajax發送給后端
              $.ajax({
                  url:'',
                  type:'post',
                  data:formDateObj,  // 直接將對象放在data后面即可
      
                  // ajax發送文件必須要指定的兩個參數
                  contentType:false,  // 不需使用任何編碼 django后端能夠自動識別formdata對象
                  processData:false,  // 告訴你的瀏覽器不要對你的數據進行任何處理
      
                  success:function (args) {
                  }
              })
          })
      

        后端接收

       

      def ab_file(request):
          if request.is_ajax():
              if request.method == 'POST':
                  print(request.POST)
                  print(request.FILES)
          return render(request,'ab_file.html')
      

       

        總結

       

       
      	1.需要利用內置對象FormData
      		// 2 添加普通的鍵值對
              formDateObj.append('username',$('#d1').val());
              formDateObj.append('password',$('#d2').val());
              // 3 添加文件對象
              formDateObj.append('myfile',$('#d3')[0].files[0])
      	2.需要指定兩個關鍵性的參數
      		contentType:false,  // 不需使用任何編碼 django后端能夠自動識別formdata對象
              processData:false,  // 告訴你的瀏覽器不要對你的數據進行任何處理
      	3.django后端能夠直接識別到formdata對象并且能夠將內部的普通鍵值自動解析并封裝到request.POST中 文件數據自動解析并封裝到request.FILES中
      
       
      django自帶的序列化組件(drf做鋪墊)
      import json
      from django.http import JsonResponse
      from django.core import serializers
      def ab_ser(request):
          user_queryset = models.User.objects.all()
          # [{},{},{},{},{}]
          user_list = []
          for user_obj in user_queryset:
              tmp = {
                  'pk':user_obj.pk,
                  'username':user_obj.username,
                  'age':user_obj.age,
                  'gender':user_obj.get_gender_display()
              }
              user_list.append(tmp)
          方式1
          return JsonResponse(user_list,safe=False)
          方式2
          return render(request,'ab_ser.html',locals())
          方式3
          # 序列化
          res = serializers.serialize('json',user_queryset)
          """會自動幫你將數據變成json格式的字符串 并且內部非常的全面"""
          return HttpResponse(res)
      

       

      ajax結合sweetalert進行3二次確認
       
         $('.del').on('click',function () {
              // 先將當前標簽對象存儲起來
              let currentBtn = $(this);
              // 二次確認彈框
              swal({
                title: "你確定要刪嗎?",
                text: "你可要考慮清除哦,可能需要拎包跑路哦!",
                type: "warning",
                showCancelButton: true,
                confirmButtonClass: "btn-danger",
                confirmButtonText: "是的,老子就要刪!",
                cancelButtonText: "算了,算了!",
                closeOnConfirm: false,
                closeOnCancel: false,
                showLoaderOnConfirm: true
              },
              function(isConfirm) {
                if (isConfirm) {
                      // 朝后端發送ajax請求刪除數據之后 再彈下面的提示框
                      $.ajax({
                          {#url:'' + currentBtn.attr('delete_id'),  // 1 傳遞主鍵值方式1#}
                          url:'/delete/user/',  // 2 放在請求體里面
                          type:'post',
                          data:{'delete_id':currentBtn.attr('delete_id')},
                          success:function (args) {  // args = {'code':'','msg':''}
                              // 判斷響應狀態碼 然后做不同的處理
                              if(args.code === 1000){
                                  swal("刪了!", args.msg, "success");
                                  // 1.lowb版本 直接刷新當前頁面
                                  {#window.location.reload()#}
                                  // 2.利用DOM操作 動態刷新
                                  currentBtn.parent().parent().remove()
                              }else{
                                  swal('完了','出現了位置的錯誤','info')
                              }
                          }
      
                      })
      
                } else {
                  swal("慫逼", "不要說我認識你", "error");
                }
              });
          })
      

        

       
      主站蜘蛛池模板: 欧洲免费一区二区三区视频 | 一级国产在线观看高清| 这里只有精品免费视频| 一卡2卡三卡4卡免费网站| 日韩免费无码人妻波多野 | 人人做人人澡人人人爽| 亚洲国产一区二区三区亚瑟 | 欧美做受视频播放| 亚洲国产午夜精品理论片| 国产精品无遮挡在线观看| 久久99热精品这里久久精品| 久久精品国产www456c0m| av色蜜桃一区二区三区| 成人午夜大片免费看爽爽爽| 长治市| 亚洲免费人成视频观看| 亚洲人成网网址在线看| 永年县| 极品人妻少妇一区二区三区| 大香伊蕉在人线国产免费| 欧美丰满熟妇bbbbbb| 国产熟睡乱子伦午夜视频| 老太脱裤让老头玩ⅹxxxx| 动漫AV纯肉无码AV电影网| 激情综合网激情综合网激情| 亚洲综合精品中文字幕| 狠狠v日韩v欧美v| 九九热99精品视频在线| 人妻av无码一区二区三区| 自拍第一区视频在线观看| 精品国产一区二区三区av性色| 狠狠五月深爱婷婷网| 一亚洲一区二区中文字幕| 国产精品自拍午夜福利| 望江县| 欧美国产日韩在线三区| 久热这里只有精品6| 国产成人亚洲欧美二区综合| 久久精品国产亚洲成人av| 婷婷丁香五月亚洲中文字幕| 中文字幕va一区二区三区|