ajax:

时间:2019-12-27
本文章向大家介绍ajax:,主要包括ajax:使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

AJAX

js技术,发送请求的一种方式.

特点:

 1. 异步
  1. 局部刷新

  2. 传输的数据量小

 $.ajax({
     url: '/test/',   // url路径
     type: 'post',    // 请求方式
     data: {          // 请求数据
         name: 'alex',
         age: 84,
         hobby: JSON.stringify(['吐口水', 'TESA', '姑娘', '毒鸡汤']),
    },
     success: function (res) {   // 响应成功的回调函数
         console.log(res);
         console.log(res.status);
         console.log(typeof(res))
    },
     error:function (res) { // 响应失败的回调函数
         console.log(res)
 
    }
 })

上传文件

 $('#b1').click(function () {
 
         var form_obj = new FormData();  // enctype="multipart/form-data"
         form_obj.append('name', 'alex')
         form_obj.append('f1', $('#f1')[0].files[0])
 
         $.ajax({
             url: '/upload/',
             type: 'post',
             data: form_obj,
             processData: false, // 不需要处理编码方式
             contentType: false, // 不需要处理contentType请求头
             success:function (res) {
                 alert(res)
            }
 
        })
    })

CSRF中间件

  1. process_request方法:

    从cookie中获取csrftoken的值,放到request.META中

  2. process_view方法:

    1. 判断视图是否使用csrf_exempt装饰器,使用了就不校验

    2. 判断请求方式是否是'GET', 'HEAD', 'OPTIONS', 'TRACE',如果是,也不校验

    3. 进行校验:

      1. csrf_token = request.META.get('CSRF_COOKIE') # cookie中获取csrftoken的值

    4. 请求方式是POST

      1. request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')

      2. 获取不到,从头中获取x-csrftoken的值 = >request_csrf_token

      3. 进行比较csrf_token request_csrf_token的值:

        1. 对比成功 接收请求

        2. 对比不成功 拒绝请求

前提

有csrftoken的cookie:

  1. {% csrf_token %}

  2.  from django.views.decorators.csrf ensure_csrf_cookie

方式一:

给data中添加csrfmiddlewaretoken的键值对

方式二:

给headers添加x-csrftoken的键值对

 headers: { 
 'x-csrftoken': $('[name="csrfmiddlewaretoken"]').val()},

方式三:

导入文件

原文地址:https://www.cnblogs.com/zhang-da/p/12109511.html