• AJAX


    一,AJAX简介

      AJAX,(Asynchronous Javascript And XML),也就是异步的Javascript和XML。使用JavaScipt语言服务器进行交互。

      AJAX最大的优点实在不重新加载整个页面的情况下,可以与服务器交换数据并且部分更新网页内容。

      ps:

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

        异步交互:客户端发出一个请求后,无需等待服务器响应结束,姐可以发出第二个请求。

    二,AJAX基本操作介绍

      页面输入两个整数,通过AJAX传输到后端计算出结果并返回。

      test.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    </head>
    <body>
    <input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3">
    <button id="b1" class="button">Ajax Test</button>
    
    <script>
        {#生成id是‘b1’的jQuery对象,触发点击事件#}
        $('#b1').click(function () {
            $.ajax({
                {#提交地址,默认是当前后端#}
                url:'',
                {#提交的方式#}
                type:'POST',
                {#提交的数据是id为i1的对象的value值和id为i2的对象的value值#}
                data:{i1:$('#i1').val(),i2:$('#i2').val()},
                {#回调函数,向前端发出指令#}
                success:function (data) {
                    $('#i3').val(data)
                }
            })
        })
    </script>
    </body>
    </html>

      view.py:

    def test(request):
        if request.method == 'POST':
            res1 = request.POST.get('i1')
            res2 = request.POST.get('i2')
            res3 = int(res1)+int(res2)
            # 向前端传入参数
            return HttpResponse(res3)
        return render(request,'test.html')

     ps:ajax默认的数据数据的编码给是也是urlencoded。

    三,JSON介绍

      一:JSON指的是JavaScript对象表示法(JavaScript Object Notation)。

      二:JSON是轻量级文本传输交换格式。

      三:JSON独立于语言。

      四:JSON具有自我描述性,更易理解。

      JSON对象和字符串转换的两个方法:

        方法一:用于将一个JSON字符串转化为JavaScript对象(json只认双引的字符串格式)

    JSON.parse('{"name":"Howker"}');

        方法二:用于将JavaScript值转化为JSON字符串。

    JSON.stringify({"name":"Tonny"})

    四,其他案例

      ajax传输json格式数据:

      test.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    </head>
    <body>
    <input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3">
    <button id="b1" class="button">Ajax Test</button>
    
    <script>
        $('#b1').click(function () {
           $.ajax({
               url:'',  // url参数可以不写,默认就是当前页面打开的地址
               type:'post',
               {#告诉django你传入的data数据是什么格式的#}
               contentType:'application/json',
               data:JSON.stringify({'name':'jason','hobby':'study'}),
               success:function (data) {
                   alert(data);
                   $('#i3').val(data)
               }
                })
                 })
    
    </script>
    </body>
    </html>

      views.py:

    def test(request):
        if request.method == 'POST':
            # 取出json数据格式的方式
            data = request.body
            res = str(data,encoding='utf-8')
            name = json.loads(res).get('name')
            return HttpResponse(name)
        return render(request,'test.html')

       ajax传输文件:

        test.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    </head>
    <body>
    <input type="file" id="i1" name="myfile">
    <input type="text" id="'i2">
    <button id="b1" class="button">Ajax Test</button>
    
    <script>
        $('#b1').click(function () {
            {#定义要给变量名formdata来存储new FormData对象#}
            let formdata = new FormData();
                       // FormData对象不仅仅可以传文件还可以传普通的键值对
                formdata.append('name','jason');
                        // 获取input框存放的文件
                        //$('#i1')[0].files[0]
                formdata.append('myfile',$('#i1')[0].files[0]); //将jQuery对象转化为js对象
                        $.ajax({
                            url:'',
                            type:'post',
                            data:formdata,
                            // ajax发送文件需要修改两个固定的参数
                            processData:false,  // 告诉浏览器不要处理我的数据
                            contentType:false,  // 不要用任何的编码,就用我formdata自带的编码格式,django能够自动识别改formdata对象
                            // 回调函数
                            success:function (data) {
                                alert(data)
                            }
                        })
                    });
    </script>
    </body>
    </html>

      views.py:

    from django.shortcuts import HttpResponse,redirect,render
    import json
    def test(request):
        if request.method == 'POST':
            # 获取文件对象
            file = request.FILES
            # 获取字符串对象
            res = request.POST
            print(file,'
    ',res)
            return  HttpResponse('okokok')
        return render(request,'test.html')

       总结:

        form表单与ajax异同点:

          1,form表单不支持异步提交局部刷新

          2,form表单不支持传输json格式数据

          3,form表单与ajax默认传输的编码格式都是 urlencoded

  • 相关阅读:
    x86架构IAM部署
    计划任务的使用
    企业微信集成
    [Vue Route 学习] Vue Route 实现自动tab切导航
    Bootstrap Blazor 组件库 Row 布局组件(栅格系统)
    Blazor 生命周期
    CentOS 7 基本命令
    MSSQL 基础操作
    Bootstrap Blazor Modal 模态框组件
    Bootstrap Blazor 组件介绍
  • 原文地址:https://www.cnblogs.com/ay742936292/p/11023956.html
Copyright © 2020-2023  润新知