ajax
请求方式 | 请求类型 |
---|
浏览器输入url地址 | get | a标签href属性 | get | form表单 | get/post | ajax | get/post |
$.ajax({
url:'',
type:'post',
data:{'d1':$('#d1').val()},
dataType:true,
success:function(args){
alert(args)
}
})
后端返回json格式数据:
from django.http import JsonResponse
return JsonResponse(dic)
前后端传输数据的编码格式
- Get请求:url?username=zhang&password=123456
- Post请求:urlencoded、formdata、json三种编码格式,form、ajax两种传输方式
form表单发送三种格式数据 | |
---|
urlencoded(默认) | 所有数据都在request.Post中 | formdata | 普通键值对在request.Post中,文件在request.Files | json | form表单无法发送此类数据 |
一定要说发什么格式的数据,就发什么格式的数据
ajax发送三种格式数据 | |
---|
urlencoded(默认) | 所有数据都在request.Post中 | formdata | 需要借助js内置对象FormData,具体代码见下方 | json | 前端要在ajax请求里面加参数contentType:'application/json' ,同时前端数据要用JSON.stringfy 处理,数据在后端存放在request.body 中 |
request对象方法补充:
request.is_ajax() 判断当前请求是否是ajax请求json.loads() 括号内如果传入了一个二进制格式的数据,那么内部将自动解码再反序列化
$('#d3').on('click', function(){
let formDataObj = new FormData();
formDataObj.append('username', $('#d1').val())
formDataObj.append('myfile',$('d2')[0].files[0])
$.ajax({
url:'',
type:'post',
data:formDateObj,
contentType:false,
processData:false,
success:function(args){
}
})
})
def func():
if request.is_ajax():
if request.method == 'POST':
print(request.POST)
print(request.Files)
return render(request, 'index.html')
django自带的序列化组件
from django.core import serializers
user_queryset = models.User.objects.all()
res = serializers.serialize('json', user_queryset)
一些小点
- 前端利用
{% for i in dic %} 生成的表格,若要添加删除按钮,可以给删除按钮添加自定义属性delete_id={{ obj.pk }} ,这样就可以方便的绑定删除函数了 - sweetalert的二次确认弹框,汉字太大的解决方法,找到显示不完全的汉字,查看css属性,加个padding-top:10px即可
|