Ajax

异步提交,局部刷新
基本语法
    $.ajax({
        url:'',  # 提交地址,与form标签的action一致
        type:'post',  # 请求方式,默认也是get
        data:{},      # 发送的数据
        success:function (args) {  # 后端返回结果之后自动触发,args接收后端返回的数据
            $().val(args)
        }
    })

Content-Type

1.urlencoded
    ajax默认的编码格式,form表单默认也是
    数据格式 xxx=xxx&aaa=bbb
    django后端会自动处理到request.POST中、
    
2.formdata
    django后端针对普通的键值对还是处理到request.POST中,但是针对文件会处理到request.FILES中
    
3.application/json
    form表单不支持,ajax可以
        <script>
        $('#d1').click(function () {
            $.ajax({
                url:'',
                type:'post',
                data:JSON.stringify({'name':'jason','age':18}),   
                // 声明什么数据就提交什么数据,不能错
                contentType:'application/json',  // 声明提交的数据为json格式
                success:function (args) {
                    alert(args)
                }

            })
        })
    </script>

ajax携带文件数据

<script>
    $('#d3').click(function () {
        // 1.先产生一个FormData对象
        let myFormDataObj = new FormData();
        // 2.往该对象中添加普通数据
        myFormDataObj.append('name', 'jason');
        myFormDataObj.append('age', 18);
        // 3.往该对象中添加文件数据
        myFormDataObj.append('file', $('#d2')[0].files[0])
        // 4.发送ajax请求
        $.ajax({
            url:'',
            type:'post',
            data:myFormDataObj,

            // ajax发送文件固定的两个配置
            contentType:false,
            processData:false,
            success:function (args){
                alert(args)
            }

        })
    })
</script>

ajax补充说明

1.后端的request.is_ajax()
    用于判断当前请求是否由ajax发出
2.后端返回的三板斧(HttpResponse,render,redirect)都会被args接收,不再影响整个浏览器页面
3.选择使用ajax做前后端交互的时候后端返回的一般都是字典数据

ajax自动反序列化后端的json格式的bytes类型数据,加一个配置即可
    dataType:'json',
posted on 2023-04-08 20:18  zyg111  阅读(12)  评论(0编辑  收藏  举报