一:ajax请求图例:

 

二:views.py中的代码

def login_ajax_handle(request):
    """ajax登录处理"""
    # 获取用户名和密码
    u = request.POST.get("username")
    p = request.POST.get("password")
    # 进行校验
    if u == "smart" and p == "123":
        # 用户名和密码正确
        # ajx请求返回的就是json数据,不能返回页面或重定向
        return JsonResponse({"res": 1})
    else:
        # 用户名和密码错误
        return JsonResponse({"res": 0})

 

三:html中的代码

<!DOCTYPE html>
<html lang="en">
<head>
    {% load staticfiles %}
    <meta charset="UTF-8">
    <title>登录页面</title>
    <script src="{% static 'js/jquery-1.12.4.js' %}"></script>
    <script>
        $(function () {
            $("#btnLogin").click(function () {
                // 获取用户名和密码
                var u = $("#username").val();
                var p = $("#password").val();
                // 此参数需要传递给后端,否则会csrf禁止,报403错误
                var csrf = $('input[name="csrfmiddlewaretoken"]').val();
                // 发起ajax请求
                $.ajax({
                    url: "/login_ajax_handle/",  // 请求的地址
                    type: "post",  // 请求方式
                    // 请求时传递过去的数据
                    data:{"username": u, "password": p, 'csrfmiddlewaretoken': csrf},
                    dataType: "json",  // 返回的数据格式
                    async: true,  // 异步的ajax
                }).success(function (data) {
                    if(data.res == 1){
                        // 请求成功实现页面跳转
                        window.location.href = "/index/";
                    }
                    else if(data.res == 0){
                        // 请求失败,显示错误信息
                        $("#errmsg").show();
                        $("#errmsg").html("用户名或密码错误");
                    }

                })
            })
        })
    </script>
    <style>
        #errmsg{
            display: none;
            color: red;
            font-size: 8px;
        }
    </style>
</head>
<body>
{# post请求必须加上下面这个变量 #}
{% csrf_token %}
<div>
    用户名: <input type="text" id="username"><br>
    密&nbsp;&nbsp;&nbsp;码: <input type="password" id="password"><br>
    <div id="errmsg"></div>
    <input type="button" id="btnLogin" value="登录">
</div>
</body>
</html>

四、第二种ajax发送post请求案例:

直接获取表单中的所有数据,然后发送请求,表单中记得写上{% csrf_token %}即可,比上面一种要简单一些

(1) html中的代码

<div class="right companyright">
                <div class="head">我要学习</div>
                <form class="rightform" id="jsStayForm">
                    {% csrf_token %}
                    <div>
                        <img src="{% static 'images/rightform1.png' %}"/>
                        <input type="text" name="name" id="companyName" placeholder="名字" maxlength="25"/>
                    </div>
                    <div>
                        <img src="{% static 'images/rightform2.png' %}"/>
                        <input type="text" name="mobile" id="companyMobile" placeholder="联系电话"/>
                    </div>
                    <div>
                        <img src="{% static 'images/rightform3.png' %}"/>
                        <input type="text" name="course_name" id="companyAddress" placeholder="课程名" maxlength="50"/>
                    </div>
                    <p class="error company-tips" id="jsCompanyTips"></p>
                    <input class="btn" type="text" id="jsStayBtn" value="立即咨询 >"/>
                </form>
            </div>

(2) js代码

$(function () {
            $(document).ready(function () {
                $('#jsStayBtn').on('click', function () {
                    $.ajax({
                        cache: false,
                        type: "POST",
                        url: "{% url 'org:add_ask' %}",
                        data: $('#jsStayForm').serialize(),
                        async: true,
                        success: function (data) {
                            if (data.status == 'success') {
                                $('#jsStayForm')[0].reset();
                                $('#jsCompanyTips').html("");
                                setTimeout(function () {
                                    alert("提交成功")
                                }, 200);
                            } else if (data.status == 'fail') {
                                $('#jsCompanyTips').html(data.msg)
                            }
                        },
                    });
                });
            });
        })

五. 第三种发送ajax发送Post请求的方法

(1)js代码

<script type="text/javascript">
        //收藏分享
        function add_fav(current_elem, fav_id, fav_type) {
            $.ajax({
                cache: false,
                type: "POST",
                url: "{% url 'ope:add_fav' %}",
                data: {'fav_id': fav_id, 'fav_type': fav_type},
                async: true,
                beforeSend: function (xhr, settings) {
                    xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
                },
                success: function (data) {
                    if (data.status == 'fail') {
                        if (data.msg == '用户未登录') {
                            window.location.href = "{% url 'users:login' %}";
                        } else {
                            alert(data.msg)
                        }

                    } else if (data.status == 'success') {
                        current_elem.text(data.msg)
                    }
                },
            });
        }

        $(document).ready(function () {
            $('#jsLeftBtn').on('click', function () {
                add_fav($(this), {{ course.id }}, 1);
            });
        });

        $(document).ready(function () {
            $('#jsRightBtn').on('click', function () {
                add_fav($(this), {{ org.id }}, 2);
            });
        });

    </script>

六.  第四种发送ajax发送Post请求的方法

<script type="text/javascript">
        //添加评论
        $(document).ready(function () {
            $('#js-pl-submit').on('click', function () {
                var comments = $("#js-pl-textarea").val()
                if (comments == "") {
                    alert("评论不能为空")
                    return
                }
                $.ajax({
                    cache: false,
                    type: "POST",
                    url: "/course/add_comment/",
                    data: {'course_id': {{ course.id }}, 'comments': comments},
                    async: true,
                    beforeSend: function (xhr, settings) {
                        xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
                    },
                    success: function (data) {
                        if (data.status == 'fail') {
                            if (data.msg == '用户未登录') {
                                window.location.href = "login.html";
                            } else {
                                alert(data.msg)
                            }

                        } else if (data.status == 'success') {
                            window.location.reload();//刷新当前页面.
                        }
                    },
                });
            });
        });

    </script>

 

更多推荐

django中ajax发送post请求的几种方法