利用ajax如何发送json格式数据/和文件
ajax不能直接发送 json格式 数据
模板展示
$('#id').click(function(){ $.ajax({ url:'', type:'post', contentType:'application/json', data:JSON.stringify({'name':$('#username').val(),'password':$('#password').val()}), success:function(args){alert(args)} }) })
主要重点在:要添加 contentType:application/json 对于data数据要 提前转JSON.stringify(xxxx)
同时后端提取时数据时 要通过request.body 而并非时requsest.POST
补充:
在后端收到json格式数据要先反序列化 也就是解锁 一般来讲 先解成decode('utf-8'),但是json.loads()支持直接解锁 不需要先转成字符串类型
发送文件格式模板注意:
#要利用内置对象FormData let formDataobj=FormData() #添加普通键值对 formDataobj.append('username',$('#id').val()) #添加文件数据 formDataobj.append('myfile',$('#id')[0].files[0]) $ajax({ url:'', type:'post', data:formDataobj, contentType:false, processData:false, success:function(args){ alert(args)} })
主要注意点是:
要利用内置对象FormData生成obj
obj.append('name',文件对象) 逗号相连 取文件的也应该要记得 $('#id')[0].files[0]
额外的参数设置
processData:false
contentType:false
通过request.Files.get()取文件数据
顺带想了一下csrf的三种方式的校验
第一种在form表单的任意位置添加
{%csrf_token%}
ajax传数据时 加上一个额外的普通键值对
'csrfmiddlewaretoken':'{{csrf_token}}'
第三种引入js文件
利用script标签 从网路上搜索即可