• Ajax发送POST请求对数据的封装


    Ajax发送POST请求把数据到后端后,后端收到数据并解析出来

    示列一:

    Ajax发送请求,这里主要是发送一个数组的数据类型到后端,如果没有先把数组进行格式化成字符串的话,后端就收了就是一个字符串类型,为了后端接收的是一个列表的类型,所以先进行JSON.stringify()进行数据的转化:

    var tr = $(":checked").parent().parent();
        if(tr.length != 0){
            tr.each(function(){
                postList.push($(this).attr('id'));      // 选择的id
            });
            //console.log(postList);                       // [1,2,3]
    
            if(postList != ''){
                $.ajax({
                url: '/demo/user/',
                type: 'POST',
                dataType: 'JSON',
                // data: JSON.stringify(postList),       //这里是把列表转化为字符串
                data: JSON.stringify({                     // 把键值对格式转化为字符串
                'postList':postList,
                'value':status
                }),
                success:function (arg) {
                   if(arg.status){
                        alert(arg.msg);
                        window.location.reload();
                   }else {
                        alert(arg.msg);
                   }
                   }
                });
                }
            }else{
                alert('请选择要设置的用户')
            }
    

      

    Py后端接收:

    def users_list(request):
        if request.method == "POST":
            content = request.body                            # 字节
            content = str(content, encoding='utf-8')    # 字符串
            result = json.loads(content)                      # 再通过json解析成一个字典,字典包含前端传的列表
            # print('结果', result,type(result))              # {'value': 'True', 'postList': ['5']} <class 'dict'>
            response = {'status':False,'msg':None}
            # for id in result:
            for id in result['postList']:
                 print(id)
            return JsonResponse(response)
    

    示列二:

    Ajax发送请求:

    $.ajax({
                    url: '/demo/user/',
                    type: 'POST',
                    dataType: 'JSON',
                    // data: JSON.stringify(postList),       //这里是把列表转化为字符串
                    data:{                     // 把键值对格式转化为字符串
                        'username':'ray',
                        'password':'123456'
                    },
                    success:function (arg) {
                        if(arg.status){
                            alert(arg.msg);
                            window.location.reload();
                        }else {
                            alert(arg.msg);
                        }
                    }
                });
    
    这里data也可以用FormData来封装数据,例如:
    var data = new FormData();
    data.append('name',$(":input[name='name']").val());
    data.append('file',$(":input[name='file']")[0].files[0]);  //文件
    

      

    Py后端接收:

    def ajaxpost(request):
            result = {}
            if request.method == "POST":
            username = request.POST.get('username ')
            password= request.POST.get('password')
            return Jsonresponse(result)
    

      

    总结:

    这里主要是记录Ajax发送数据对数据格式的封装。

    ① 如果前端需要发送一个列表格式的数据给后端,则需要通过 JSON.stringify() 先把数据转换为字符串发送给后端,后端可以通过request.body获取到数据并把数据用 json.reloads 解析出来。

    ② 如果前端直接发送一个键值对的数据给后端,后端在接收数据的时候可直接通过request.POST获取即可。

  • 相关阅读:

    《银行》
    动画
    定位
    浮动
    《css的总结》
    Java的Debug调试
    Eclipse "Unable to install breakpoint due to missing line number attributes..."
    解决 Tomcat Server in Eclipse unable to start within 45 seconds 不能启动的问题
    Java下载文件(流的形式)
  • 原文地址:https://www.cnblogs.com/ray-h/p/10725048.html
Copyright © 2020-2023  润新知