ray-h

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获取即可。

 

分类:

技术点:

相关文章: