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标签 从网路上搜索即可