ajax入门
目录
- ajax简介
- 两个特点
- ajax与form表单的区别
- 简单案例
- 前后端传输数据编码格式
- ajax发送json格式数据
- ajax携带文件数据
ajax简介
页面不刷新的情况下可以与后端进行数据交互
两个特点
- 异步提交
- 局部刷新
ajax与form表单的区别
ajax提交数据页面不用刷新 原始数据还在 处理数据的过程中不影响页面其他操作
form表单提交数据页面刷新 原始数据不在 并且处理数据的过程中无法做其他操作
简单案例
# 简易加法运算
# 需求:页面有三个input框和一个提交按钮,前两个框输入数字;点击按钮最后一个框展示前两个数字的和并且页面不能刷新
{# +=#}
数字1
数字2
数字3
def add(request):
print(request.is_ajax())
if request.is_ajax():
if request.method == 'POST':
print(request.POST)
n1 = request.POST.get('n1')
n2 = request.POST.get('n2')
print(n1, n2)
n3 = int(n1) + int(n2)
return HttpResponse(n3)
return render(request, 'add.html')
前后端传输数据编码格式
请求体中携带编码格式
Content-Type:具体格式
django针对不同编码方式对应的数据格式会采用不同的处理策略
# form表单默认发送的编码格式
Content-Type: application/x-www-form-urlencoded
数据格式:username=linda&password=qwer123
django后端会自动处理到:request.POST
# form表单发送文件
Content-Type: multipart/form-data
数据格式:隐藏
django后端会自动处理:request.POST request.FILES
# ajax默认的编码格式
Content-Type: application/x-www-form-urlencoded
数据格式:username=linda&password=qwer123
django后端会自动处理到:request.POST
ajax发送json格式数据
# form表单无法发送json格式数据
ajax发送的数据类型一定要跟数据的编码格式一致
编码格式是urlencoded
数据格式就应该是username=linda&password=1234
# django后端针对json格式的数据不会做任何的处理,存在request.body内,需单独处理
$('#d1').click(function () {
$.ajax({
url:'',
type:'post', // 为空默认也是get请求
contentType:'application/json', // 为空默认是urlencoded编码
data:JSON.stringify({'name':'linda','pwd':9999}), // 序列化方法
success:function (args) {
}
})
})
ajax携带文件数据
$("#d1").click(function () {
// 需要利用内置js内置对象FormData
let myFormData = new FormData();
// 对象添加普通数据
myFormData.append('username',$('#name').val())
myFormData.append('password',$('#pwd').val())
// 对象添加文件数据
myFormData.append('my_file',$('#file')[0].files[0])
// 发送ajax请求
$.ajax({
url:'',
type:'post',
data:myFormData,
// 携带文件必须要指定的两个参数
contentType:false,
processData:false,
success:function (args) {
// 处理异步回调返回的结果
}
})
})