zoukankan      html  css  js  c++  java
  • Ajax的基本使用

    1.一个简单的ajax使用

    <h4>index页面</h4>
    <button class="btn">提交ajax</button>
    <p class="show"></p>
    html
            $(".btn").click(function () {
               $.ajax({
                url:"/handle_ajax/",
                type:"get",
                success:function (response) {
                    console.log(response);
                    $(".show").html(response)
                }
            })
            });
    ajax

    2.带参数、数据格式为json的ajax请求

    <input type="text" id="num1">+<input type="text" id="num2">=<input id="ret" type="text"><button class="cal">计算</button>
    {% csrf_token %}
    html
            $(".cal").click(function () {
                var num1 = $("#num1").val();
                var num2 = $("#num2").val();
                $.ajax({
                    url:"/cal/",
                    type:"post",
                    contentType:"json",
                    data:JSON.stringify({
                        num1:num1,
                        num2:num2,
                        //csrfmiddlewaretoken:$("input[type=hidden]").val()
                    }),
                    success:function (response) {
                        $("#ret").val(response)
                    }
                })
            });
    ajax
    def cal(request):
    
        # num1 = request.POST.get("num1")
        # num2 = request.POST.get("num2")
        # ret = int(num1)+int(num2)
        print(request.POST)
        print(request.body)
        num1 = json.loads(request.body.decode("utf8")).get("num1")
        num2 = json.loads(request.body.decode("utf8")).get("num2")
        ret = int(num1)+int(num2)
        return HttpResponse(str(ret))
    views
                    headers:{
                        "X-CSRFToken":$.cookie('csrftoken')  前提需要引入文件
                    },
    可以通过

    3.contentType

    <form action="/name/" method="post" enctype="application/x-www-form-urlencoded">
        {% csrf_token %}
        姓名 <input type="text" name="user">
        <input type="submit">
    </form>
    View Code

    4.文件上传

    <h4>4 form表单形式的文件上传</h4>
    <form action="/file_put/" method="post" enctype="multipart/form-data">
        姓名 <input type="text" name="user">
        文件 <input type="file" name="file_obj">
        <input type="submit">
    </form>
    <hr>
    <h4>5 Ajax形式的文件上传</h4>
    <form>
        姓名 <input type="text" id="user">
        文件 <input type="file" id="file" name="file_obj">
        <input type="button" class="filebtn" value="提交">
        <p class="msg"></p>
    </form>
    html
            $(".filebtn").click(function () {
                var formdata = new FormData();
                formdata.append("file_obj",$("#file")[0].files[0]);
                formdata.append("user",$("#user").val());
                $.ajax({
                    url:"/file_put/",
                    type:"post",
                    //ajax上传文件必备参数
                    contentType:false,  //不设置内容类型
                    processData:false,  //不处理数据
                    data:formdata,
                    success:function (response) {
                        if(response=="OK"){
                            $(".msg").html("上传成功!")
                        }
                    }
                })
                
            })
    ajax
    import os
    from ajiakesi import settings
    def file_put(request):
    
        print(request.POST)
        print(request.FILES)
        file_obj = request.FILES.get("file_obj")
        file_name = file_obj.name
        path = os.path.join(settings.BASE_DIR,"media","img",file_name)
        with open(path,"wb") as f:
            for line in file_obj:
                f.write(line)
        return HttpResponse("OK")
    views

    5.登录

        <form>
            {% csrf_token %}
            用户名 <input type="text" id="user">
            密码 <input type="password" id="pwd">
            <input type="button" id="login_btn" value="提交"><span class="error"></span>
        </form>
    html
            $(function () {
                $("#login_btn").click(function () {
                    $.ajax({
                        url:"/login/",
                        type:"post",
                        data:{
                            user:$("#user").val(),
                            pwd:$("#pwd").val(),
                            csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val()
                        },
                        success:function (response) {
                            console.log(response);
                            var res = JSON.parse(response);
                            if (res.user){
                                //登录成功
                                location.href="/index/"
                            } else {
                                //登录失败
                                $(".error").html(res.error).css("color","red");
                                setTimeout(function () {
                                    $(".error").html("" +
                                        "")
                                },1000)
    
                            }
                        }
                    })
                })
            })
    ajax
    def login(request):
        res = {"user":None,"error":""}
        if request.method == "POST":
            user = request.POST.get("user")
            pwd = request.POST.get("pwd")
            user_obj = UserInfo.objects.filter(user=user,pwd=pwd).first()
            print(user_obj)
            if user_obj:
                res["user"] = user
            else:
                res["error"] = "用户名或密码错误!"
            return HttpResponse(json.dumps(res))
        else:
            return render(request,"login.html")
    Views
  • 相关阅读:
    2019.6.1 模拟赛——[ 费用流 ][ 数位DP ][ 计算几何 ]
    LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
    AGC033 D~F——[ 值放到角标的DP ][ 思路+DP ][ 思路 ]
    LOJ 2719 「NOI2018」冒泡排序——模型转化
    LOJ 3094 「BJOI2019」删数——角标偏移的线段树
    CF 717A Festival Organization——斯特林数+递推求通项+扩域
    LOJ 3090 「BJOI2019」勘破神机——斯特林数+递推式求通项+扩域
    洛谷 4723 【模板】线性递推——常系数线性齐次递推
    bzoj 3924 幻想乡战略游戏 —— 动态点分治
    计算几何整理
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9877575.html
Copyright © 2011-2022 走看看