Ajax

前戏

概念

异步提交,局部刷新

最大的优点是在页面不刷新的情况下可以与后端进行数据交互

用户注册无需点击按钮内部也可完成数据交互

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求

ajax不是一门全新知识,本质就是一些js代码,学习ajax直接使用jQuery封装之后的版本(语法更加简单),所以 使用ajax的前提必须要引入jQuery文件

与form表单的区别

学习ajax一定要能够发现提交数据的区别

ajax提交数据

页面不用刷新,原始数据还在,处理数据的过程中不影响页面其他操作

form表单提交数据

页面刷新,原始数据不在,处理数据的过程中无法做其他操作

需求

页面上有三个input框和一个提交按钮,前两个框输入数字,点击按钮,最后一个框里面展示数字的和,并且页面不能刷新

代码展示

ajax_test.html

<input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3">
<button id="b1">Ajax Testbutton>

<script src="/static/jquery-3.3.1.min.js">script>
<script>
    $('#b1').click(function () {
        $.ajax({
            url:'',
            type:'POST',
            data:{i1:$('#i1').val(),i2:$('#i2').val()},
            success:function (data) {
                $('#i3').val(data)
            }
        })
    })

script>

views.py

def ajax_test(request):
    if request.method=='POST':
        i1=request.POST.get('i1')
        i2=request.POST.get('i2')
        ret=int(i1)+int(i2)
        return HttpResponse(ret)
    return render(request,'ajax_test.html')

Ajax语法结构

$('#btn').click(function () {
            // 获取两个框里面的数据
            let i1Val = $('#i1').val();
            let i2Val = $('#i2').val();
            // 发送ajax请求传输数据
            $.ajax({
                url:'',  // 不写默认就是当前页面所在的地址
                type:'post', // 指定当前请求方式
                data:{'i1':i1Val,'i2':i2Val},  // 请求携带的数据
                success:function (args) {  // 异步回调函数 后端有回复自动触发
                    $('#i3').val(args)
                }
            })
        })

前后端传输数据编码格式

比较form表单和Ajax的区别

请求体中携带编码格式: Content-Type:…:…

form表单

form表单默认发送的编码格式:Content-Type: application/x-www-form-urlencoded

数据格式:username = shun & password = 123

django后端自动处理到:request.POST

form表单发送文件

Content-Type: multipart/form-data

数据格式:隐藏不让看

django后端会自动处理到:request.POST request.FILES

Ajax

ajax默认的编码格式:Content-Type: application/x-www-form-urlencoded

数据格式:username = jason & password = 123

django后端会自动处理到:request.POST

django针对不同编码方式对应的数据格式会采用不同的处理策略

Ajax发送json格式数据

form表单是无法发送json格式数据的

ajax发送的数据类型一定要跟数据的编码格式一致

django后端针对json格式的数据不会做任何的处理,就在request.body内,需要我们自行处理

$('#d1').click(function () {
        $.ajax({
            url:'',
            type:'post',  // 不写默认也是get请求
            contentType:'application/json',  // 不写默认是urlencoded编码
            data:JSON.stringify({'name':'jason','pwd':123}),  // 序列化方法
            success:function (args) {
            }
        })
    })

Ajax

Ajax携带文件数据

$("#d1").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) {
                // 处理异步回调返回的结果
            }
        })
    })

异步回调参数

Ajax

Ajax

Original: https://www.cnblogs.com/zzs0626/p/16290462.html
Author: 顺溜_7
Title: Ajax

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582436/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球