zoukankan      html  css  js  c++  java
  • 使用ajax进行前后台的数据交互

    1 什么是ajax:

    ​ 异步的JavaScript和xml,跟后台交互,都用json

    2 ajax干啥用的?

    ​ 前后端做数据交互:

    3 特点:

    ​ -异步(异步和同步的区别:同步是请求发过去,要等着回应;异步:不需要等回应,可以进行其他操作)
    ​ -局部刷新:

    4 使用ajax实现一个简单的文件上传页面

    前端页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <script src="/static/jquery-3.3.1.js"></script>
        <title>Title</title>
    </head>
    <body>
    <form action="/files/" method="post" enctype="multipart/form-data">
        <p>用户名:<input type="text" name="name" id="name"></p>
    
        <p><input type="file" name="myfile" id="myfile"></p>
    
        <input type="submit" value="提交">
    
    </form>
    <button id="btn">ajax提交文件</button>
    
    </body>
    <script>
        $("#btn").click(function () {
            //上传文件,必须用FormData
            var formdata=new FormData();
            formdata.append('name',$("#name").val());
            //取出文件$("#myfile")[0].files拿到的是文件列表,取第0个把具体的文件取出来
            formdata.append('myfile',$("#myfile")[0].files[0]);
    
            $.ajax({
                url:'/files_ajax/',
                type:'post',
                //不预处理数据,(name=lqz&age=18)
                processData:false,
                //指定往后台传数据的编码格式(urlencoded,formdata,json)
                //现在用formdata对象处理了,就不需要指定编码格式了,不要给我编码了
                contentType:false,
                data:formdata,
                success:function (data) {
                    alert(data)
    
                }
            })
    
        })
    
    </script>
    </html>
    

    后台views.py中的页面

    def files_ajax(request):
        # 提交文件从,request.FILES中取,提交的数据,从request.POST中取
        name=request.POST.get('name')
        print(name)
        dic_files = request.FILES
        myfile = dic_files.get('myfile')
        with open(myfile.name, 'wb') as f:
            # 循环上传过来的文件
            for line in myfile:
                # 往空文件中写
                f.write(line)
        return HttpResponse('ok')
    

    5 基于ajax提交json格式的数据(简单的用户登录认证)

    前端页面

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>登录验证</title>
        <script src="/static/jquery-3.3.1.js"></script>
    </head>
    <body>
    <form>
        <p>用户名:<input type="text" name="user" id="name"></p>
        <p>密码:<input type="password" name="pwd" id="pwd"></p>
    </form>
    <button id="btn">提交</button>
    <p class="test"></p>
    </body>
    <script>
        $('#btn').click(function () {
            var dic = {'name':$('#name').val(),'pwd':$('#pwd').val()};
            var msg = JSON.stringify(dic);
            var $test = $('.test');
            $.ajax({
                url:'/login/',
                type:'post',
                //指定请求的数据格式为json
                contentType:'application/json',
                data:msg,
                //指定响应的格式为json,注意如果后台没有放回json类型的数据格式下方的success不会执行
                dataType:'json',
                success:function (res) {
                    data = JSON.parse(res);
                    if (data == '2'){
                        $test.text('登录失败!')
                    } else if (data == '1'){
                        location.href='https://www.baidu.com/'
                    }
                }
            });
        });
    </script>
    </html>
    

    后台views.py中的内容

    from django.shortcuts import render, redirect, HttpResponse
    import json
    from loginapp.models import *
    
    
    # Create your views here.
    def login(request):
        if request.method == 'GET':
            return render(request, 'login.html')
        if request.method == "POST":
    
            msg = json.loads(request.body.decode('utf-8'))
            print(msg)
            res = User.objects.filter(user=msg['name'], pwd=msg['pwd']).first()
            if res:
                return HttpResponse(json.dumps('1'))
            else:
                return HttpResponse(json.dumps('2'))
    
    
  • 相关阅读:
    CSS流式布局 仿京东
    Flex 实现仿 携程网 手机端布局
    JS 实现 微信随机发红包思路
    记录gradle 使用笔记
    springBoot入门
    支付宝当面付扫码支付功能详解
    微信验证以及登录流程
    Nginx配置文件详细说明
    crontab定时任务打包备份文件并删除过期文件
    关于List比较好玩的操作
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9984870.html
Copyright © 2011-2022 走看看