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