zoukankan      html  css  js  c++  java
  • django 使用Ajax方式POST JSON数据包

     示例1:

    js:

    function SaveAction(){
        //点击 保存按键
        var senddata = {"type":"A", "host":"www", "resolution_line":"0", "data":"172.16.2.3", "mx":"5", "ttl":"600"}
        $.ajax({
            url: "/dns/add.html",
            type: "POST",        //请求类型
            data: {"data":senddata},
            dataType: "json",   // 这里指定了 dateType 为json后,服务端响应的内容为json.dumps(date),下面 success 的callback 数据无需进行JSON.parse(callback),已经是一个对象了,如果没有指定dateType则需要执行 JSON.parse(callback)
            success: function (callback) {
                //当请求执行完成后,自动调用
                //callback, 服务器返回的数据
                console.log(callback);
            },
            error: function () {
                //当请求错误之后,自动调用
            }
        });
    }

    django 后台 view:

    def record_add(req):
        """
        添加解析记录
        :param req:
        :return:
        """
        if req.method == 'POST':
            type = req.POST.get('data[type]')
            host = req.POST.get('data[host]')
            resolution_line = req.POST.get('data[resolution_line]')
            data = req.POST.get('data[data]')
            mx = req.POST.get('data[mx]')
            ttl = req.POST.get('data[ttl]')
            print(type, host, resolution_line, data, mx, ttl)
            return HttpResponse('hehe')
        else:
            return HttpResponse('use POST request method please.')

    示例2:

    JS

    function SaveAction(){
        //点击 保存按键
        var _type = $(".modal-body select[name=type]").val();
        var _host = $(".modal-body input[name=host]").val();
        var _resolution_line = $(".modal-body select[name=resolution_line]").val();
        var _data = $(".modal-body input[name=data]").val();
        var _mx = $(".modal-body input[name=mx]").val();
        var _ttl = $(".modal-body select[name=ttl]").val();
        var senddata = {"type":_type, "host":_host, "resolution_line":_resolution_line, "data":_data, "mx":_mx, "ttl":_ttl }
        $.ajax({
            url: "/dns/add.html",
            type: "POST",        //请求类型
            //contentType: "application/json; charset=utf-8",
            data: senddata,
            dataType: "json",
            success: function (callback) {
                //当请求执行完成后,自动调用
                //arg, 服务器返回的数据
                console.log(callback);
            },
            error: function () {
                //当请求错误之后,自动调用
            }
        });
    }

    django view

    def record_add(req):
        """
        添加解析记录
        :param req:
        :return:
        """
        if req.method == 'POST':
            type = req.POST.get('type')
            host = req.POST.get('host')
            resolution_line = req.POST.get('resolution_line')
            data = req.POST.get('data')
            mx = req.POST.get('mx')
            ttl = req.POST.get('ttl')
            print(type, host, resolution_line, data, mx, ttl)
            return HttpResponse('hehe')
        else:
            return HttpResponse('use POST request method please.')

    示例3: 

    js

    function SaveAction(){
        //点击 保存按键
        var _type = $(".modal-body select[name=type]").val();
        var _host = $(".modal-body input[name=host]").val();
        var _resolution_line = $(".modal-body select[name=resolution_line]").val();
        var _data = $(".modal-body input[name=data]").val();
        var _mx = $(".modal-body input[name=mx]").val();
        var _ttl = $(".modal-body select[name=ttl]").val();
        var senddata = {"type":_type, "host":_host, "resolution_line":_resolution_line, "data":_data, "mx":_mx, "ttl":_ttl }
    
    
        $.post("/dns/add.html", {'data':JSON.stringify(senddata)},function(callback){
            JSON.parse(callback);
        });
    }

    $.post 源码:

    jQuery.each( [ "get", "post" ], function( i, method ) {
        jQuery[ method ] = function( url, data, callback, type ) {
            // shift arguments if data argument was omitted
            if ( jQuery.isFunction( data ) ) {
                type = type || callback;
                callback = data;
                data = undefined;
            }
    
            return jQuery.ajax({
                url: url,
                type: method,
                dataType: type,
                data: data,
                success: callback
            });
        };
    });

    django view

    def record_add(req):
        """
        添加解析记录
        :param req:
        :return:
        """
        if req.method == 'POST':
            data = req.POST.get('data')     # str: {"type":"A","host":"www","resolution_line":"0","data":"172.16.2.3","mx":"5","ttl":"600"}
            data = json.loads(data)  # 字典:{'resolution_line': '0', 'data': '172.16.2.3', 'host': 'www', 'mx': '5', 'ttl': '600', 'type': 'A'}return HttpResponse('hehe')
        else:
            return HttpResponse('use POST request method please.')

    示例4

    js $.ajax post提交 json数据

    function SaveAction(){
        //点击 保存按键
        var _type = $(".modal-body select[name=type]").val();
        var _host = $(".modal-body input[name=host]").val();
        var _resolution_line = $(".modal-body select[name=resolution_line]").val();
        var _data = $(".modal-body input[name=data]").val();
        var _mx = $(".modal-body input[name=mx]").val();
        var _ttl = $(".modal-body select[name=ttl]").val();
        var senddata = {"type":_type, "host":_host, "resolution_line":_resolution_line, "data":_data, "mx":_mx, "ttl":_ttl }
        $.ajax({
            url: "/dns/add.html",
            type: "POST",        //请求类型
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(senddata),
            dataType: "json",
            success: function (callback) {
                //当请求执行完成后,自动调用
                //arg, 服务器返回的数据
                console.log(callback);
            },
            error: function () {
                //当请求错误之后,自动调用
            }
        });
    }

    django view

    import json
    
    def record_add(req):
        """
        添加解析记录
        :param req:
        :return:
        """
        if req.method == 'POST':
            body_data = req.body    # 获取http请求体数据
            print(body_data)        # b'{"type":"A","host":"www","resolution_line":"0","data":"172.16.2.3","mx":"5","ttl":"600"}'
            print(type(body_data))    # <class 'bytes'>
            body_data_str = str(body_data, encoding="utf8")     # bytes 转 str
            data = json.loads(body_data_str)
            print(data['type'])
            return HttpResponse('hehe')
        else:
            return HttpResponse('use POST request method please.')

    示例5:

    建议使用这种方式

    js

    function SaveAction(){
        //点击 保存按键
        var _type = $(".modal-body select[name=type]").val();
        var _host = $(".modal-body input[name=host]").val();
        var _resolution_line = $(".modal-body select[name=resolution_line]").val();
        var _data = $(".modal-body input[name=data]").val();
        var _mx = $(".modal-body input[name=mx]").val();
        var _ttl = $(".modal-body select[name=ttl]").val();
        var senddata = {"type":_type, "host":_host, "resolution_line":_resolution_line, "data":_data, "mx":_mx, "ttl":_ttl }
        $.ajax({
            url: "/dns/add.html",
            type: "POST",        //请求类型
            data: {'data': JSON.stringify(senddata)},
            dataType: "json",
            success: function (callback) {
                //当请求执行完成后,自动调用
                //arg, 服务器返回的数据
                console.log(callback);
            },
            error: function () {
                //当请求错误之后,自动调用
            }
        });
    
    }

     js post提交源数据:

     

     django view

    def record_add(req):
        """
        添加解析记录
        :param req:
        :return:
        """
        if req.method == 'POST':
            data = req.POST.get('data')
            print(type(data))       # <class 'str'>
            data = json.loads(data)    # str json序列化
    
            return HttpResponse('hehe')
        else:
            return HttpResponse('use POST request method please.')
  • 相关阅读:
    LInux 安装 MySQL
    JS BUG 传递数字过大,数据值会变化
    tabs 标签样式
    【异常】IOException parsing XML document from class path resource [xxx.xml]
    云服务器启动tomcat巨慢,很慢
    Linux修改/etc/profile配置错误command is not found自救方法
    linux 安装 vsftpd服务
    为什么说 Vue 的响应式更新比 React 快
    在idea中使用git拉去最新代码并merge到本地代码中
    解决重新打开一个项目,idea需要重新配置maven的问题
  • 原文地址:https://www.cnblogs.com/linkenpark/p/7461709.html
Copyright © 2011-2022 走看看