AJAX

1. json
1. json是一种数据格式
2. 数据类型
3. 序列化
4. 反序列化
5. 前端
    数据类型:字符串 数字 布尔值 数组 对象 null
    序列化:JSON.stringify(js的数据类型)
    反序列化:JSON.parse(json的字符串)
6. JsonResponse
    from django.http import JsonResponse
    JsonResponse([], safe=False)
  1. 发请求的途径
    1. a标签 GET
    2. form表单 GET /POST
      1. action:
      2. method:
      3. input标签要有name属性
      4. 有一个input标签的type='submit'或者button
    3. 地址栏中输入地址回车 GET

    注意以上三种方式是同步请求

    1. ajax(异步)
  2. ajax
    1. 使用js的技术发请求的一个方式,与服务器交互的技术
    2. 特点: 异步 页面局部刷新 传输的数据量小
    3. 使用:
      1. 使用JQuery:
        1.格式
        2.上传文件
        form_obj = new FormData()
        form_obj.append('f1', $())
        $.ajax({
        })
  3. 使用格式及参数
    $.ajax({
        url: '/ajax_test/',    # 请求的地址
        type: 'post',		  # 请求的方式
        data: {					# 请求的数据
            name: 'alex',
            age: '73',
            hobby: JSON.stringify(['吃烧饼', '画大饼', '卖烧饼'])
        },
        success: function (res) {     # 正常响应的回调函数
            $('[name="ii3"]').val(res)
        },
        error:function (res) {		 # 错误响应的回调函数
            console.log(res)
        }
    })
    
  4. 上传文件
    $('#b1').click(function () {
        var form_obj = new FormData();
        form_obj.append('f1',$('[name="f1"]')[0].files[0])
    
        $.ajax({
            url:'/upload/',
            type:'post',
            processData:false,   #  不需要处理数据编码格式
            contentType:false,	 #  不需要处理请求头
            data:form_obj,
            success:function (res) {
                alert(res)
            }
    
        })
    
    })
    
  5. ajax可以提交POST请求的方式:
    1. 页面中使用{% csrf_token %},给POST提交数据中添加csrfmiddlewaretoken的键值对

      $.ajax({
      type:'post',
      data: {
          'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val(),
          i1: $('[name="i1"]').val(),
          i2: $('[name="i2"]').val()
      },
      })
      
    2. 添加X-csrftoken的请求头

      $.ajax({
      type:'post',
      headers:{
        'X-csrftoken': $('[name="csrfmiddlewaretoken"]').val(),
      },
      })
      
    3. 写文件

      从cookie中获取值,添加到请求头中。

      必须确保有csrftoken的cookie

      from django.views.decorators.csrf import ensure_csrf_cookie
      
原文地址:https://www.cnblogs.com/russellyoung/p/10105972.html