django中使用AJAX时如何获取表单参数(按钮携带参数)

前提是函数和相应的视图路由都已经配置好了,然后就是表单了:

<form  id="SmsForm" method="post" class="a">
            {% csrf_token %}
            <div class="">
                <input class="" name="name" id="name" type="text" placeholder="请输入用户名">
            </div>
            <div class="form-group">
                <input type="text" onfocus="(this.type='time')" id="pick_time" name="time" placeholder="请输入时间" >
            </div>
            <div class="form-group">
                <input class="" name="addr1" id="addr1" type="text" placeholder="请输入地址1">
            </div>
            <div class="form-group">
                <input class="" name="addr2" id="addr2" type="text" placeholder="请输入地址2">
            </div>
            <div class="form-group">
                <input class="form-control" name="tel" id="tel" type="text" placeholder="请输入电话">
            </div>
            <input class="b" type="button" value="预览短信" onclick="send_sms('check')"/>

            <input class="b" type="button" value="发送短信" onclick="send_sms('send')"/>

        </form>
    <script src="/static/js/jquery.min.js"></script>
<script>
    $('#pick_time').blur(function(){
    var obj = $(this);
    if(!obj.val()){
        obj.prop('type','text');
    }
});

function  send_sms(work_operation) {
    var data={};
        data['status'] = work_operation;
    var params = $('#SmsForm').serializeArray();
    for (x in params){
        data[params[x].name] = params[x].value;
    }
    $.ajax({
        type:"POST",
        url: "{% url 'managing:get_sms_message' %}",
        data: data,
        dataType: "json",
        success: function (response) {
            document.getElementById("get_sms_message").textContent = response.message;
        },
        error: function (rs, e) {
            alert(rs.responseText);
        }
    });
}
</script>

首先生成一个data字典,然后将参数作为窗台传入字典当中,接着将表单的数据传到一个params的变量里面,这个方法我也是在网上找的,大概的意思应该是将表单数据以数组的形式序列化,然后就是遍历params这个变量,依次将表单数据传入data,最后将data放到POST的data里面,后面的就是视图接收数据,依据不同的的传入参数编写检验函数和发送函数就可以了。

原文地址:https://www.cnblogs.com/zzy0306/p/8892107.html