微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax微讲解

Ajax微讲解

Ajax简介

	ajax不是一门全新的知识,本质就是一些js代码,我们学习ajax可以直接使用jQuery封装之后的版本,因为更加的简单,所以
使用ajax的前提就是提前引入jQuery文件。
    ajax能实现的功能就是异步提交,局部刷新,在页面不刷新的情况下可以与后端进行数据交互。学习ajax一定要能够知道与form表单
提交数据的区别,ajax提交数据页面不用刷新,原始数据还在,处理数据的过程中不影响页面其他操作;而form表单提交数据页面刷新,
原始数据就不在了,并且数据处理过程中无法做其他操作
# 代码演示
	需求:计算两个数的和,提交计算之后用户输入的数据不会消失
	views.py代码:
        def add(request):
            print(request.is_ajax())  # 判断是否是Ajax请求
            if request.is_ajax():
                if request.method == 'POST':
                    a1 = request.POST.get('a1')
                    a2 = request.POST.get('a2')
                    res = int(a1) + int(a2)
                    return HttpResponse(res)
            return render(request,'add.html')
	add.HTML代码:'''先导去jQuery包'''
        <input type="text" id="a1"> + <input type="text" id="a2"> = <input type="text" id="a3">
        <button id="btn">计算</button>
        <script>
            $('#btn').click(function (){
                // 获取两个框里面的值
                let a1Val = $('#a1').val();
                let a2Val = $('#a2').val();
                // 发送Ajax请求
                $.ajax({
                    url:'',  // 不传参数认就是当前页面的地址
                    type:'post',  // 指定当前请求方式
                    data:{'a1':a1Val,'a2':a2Val},  // 请求携带的数据
                    success:function (args){  // 异步回调函数,后端有回复自动触发
                        $('#a3').val(args)
                    }
                })
            })
        </script>
'''
我们之前讲过异步就是提交完任务之后不在原地等待任务的结果,直接去做其他事情,有结果的话会自动提醒,拿到结果
'''

前后端传输数据编码格式

# 1.form表单认发送的编码格式
	Content-Type: application/x-www-form-urlencoded
	数据格式:username=ass&password=123
	Django后端会自动处理到:request.POST
# 2.form表单发送文件
	Content-Type: multipart/form-data
	数据格式:隐藏看不了
	Django后端会自动处理到:request.POST,request.FILES
# 3.ajax认的编码格式
	Content-Type: application/x-www-form-urlencoded
	数据格式:username=ass&password=123
	Django后端会自动处理到:request.POST
'''
Django针对不同的编码方式对应的数据格式会采用不同的处理策略
'''

ajax发送json格式数据

	ajax发送的数据类型要与数据的编码格式一致,所以如果我们想要发送json格式的数据,就要修改ajax的编码格式。
    当我们后端拿到ajax发送的json格式的数据,Django后端针对json格式的数据不会做任何的处理,就封装在request.body中,需要
我们自己处理,注意form表单是没有办法发送json格式的数据的。
# 代码演示
	<button id="a1">提交数据</button>
    <script>
        $('#a1').click(function (){
            $.ajax({
                url:'',
                type:'post',  //不写认也是get请求
                contentType:'application/json',  // 指定编码格式,不写认就是urlencoded编码
                data:JSON.stringify({'name':'oscar','pwd':123}),  // 序列化方法
                success:function (args){

                }
            })
        })
    </script>

ajax携带文件数据

<input type="text" id="name">
<input type="text" id="pwd">
<input type="file" id="file">
<button id="btn">提交数据</button>
<script>
    $("#btn").click(function () {
        // 需要利用js内置对象FormData
        let myFormData = new FormData();
        // 对象添加普通数据
        myFormData.append('username',$('#name').val())
        myFormData.append('password',$('#pwd').val())
        // 对象添加文件数据
        myFormData.append('my_file',$('#file')[0].files[0])
        // 发送ajax请求
        $.ajax({
            url:'',
            type:'post',
            data:myFormData,
            // 携带文件必须要指定的两个参数
            contentType:false,
            processData:false,
            success:function (args) {
                // 处理异步回调返回的结果
            }
        })
    })
</script>

这里是IT小白陆禄绯,欢迎各位大佬的指点!!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐