ajax简介
前后台做数据交互 前后端做数据交互的方式(三种): (1)浏览器窗口输入地址(get的方式) (2)form表单提交数据 (3)ajax提交数据
特点
特点:
(1)异步 异步与同步的区别:同步是请求发过去,要等着回应;异步不需要等待,可以进行其他操作 (2)局部刷新
使用
使用: (1)url:匹配的路由 (2)type:发送的的方式 (3)data:发送的数据 (4)success:发送的数据成功回调条数 $(\'.btn\').click(function () { $.ajax({ url:\'/index/\', type:\'post\', data:{"name":\'lqz\',"age":18}, success:function (data) { alert(data) } }) }); 前端知识点: $(\'#id\') : JQ获取标签 $(\'#id\').val() : 获取值 js跳转页面:location.href = \'https://www.baidu.com/\'
post 上传文件
# 知识要点: # enctype="multipart/form-data" # 传文件格式 # enctype="application/x-www-form-urlencoded" # 默认格式 # 模板层: <form action="/myfiles/" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit" value="提交"> </form> # 视图层: def myfiles(request): if request.method == \'GET\': return render(request, \'myfiles.html\') files = request.FILES # 拿到字典 {\'myfile\': [<InMemoryUploadedFile: 111.png (image/png)>]}> my_file = files.get(\'myfile\') # 取出文件流 with open(my_file.name,\'wb\') as f: # 写入文件 for i in my_file: f.write(i) return HttpResponse(\'OK\')
ajax 上传文件
# 知识要点: # 传文件用 FormData 类 # 往对象里(字典)添加值 $(\'.btn\').onclick(function () { var fordata = new FormData(); # 生成文件对象 fordata.append(\'name\',$(\'#name\').val()); # 添加值 fordata.append(\'myfiles\',$(\'#myfiles\')[0].files[0]); # 添加文件流 $.ajax({ url:\'/ajaxfiles/\', # 路由 type:\'post\', # 请求的形式 processData:false, # 不指定编码方式(默认指定编码 urlencode) contentType:false, # 不处理数据(默认处理数据:name=lxx &age=18) data:fordata, # 传文件的数据 success:function (data) { # 请求成功回调函数 alert(data) } }) })
ajax 提交 Json 格式的数据
# 知识要点: # Json.stringify : 相当于序列化成字符串的形式 # Json.parse : 相当与反序列化 # $(\'.div\').text(\'xx\'):修改标签内容 # 发送Json格式的请求方式 # contentType:\'application/json\' # 响应回来解析的方式(不管后台传过来的数据,都给我反序列化) # dataType:\'json\', # 返回用JsonResponse,Django自动反序列化 # 模板层: $(\'.btn\').click(function () { var post_data={\'name\':$("#name").val(),\'pwd\':$("#pwd").val()}; var post=JSON.stringify(post_data); # 序列化传到后台数据 $.ajax({ url:\'/jsonfile/\', type:\'post\', data:post, # 携带的数据 contentType:\'application/json\', # 发送json格式的数据的请求 dataType:\'json\', # 响应回来的解析方式 success:function (data) { var ret=JSON.parse(data); 反序列化 } }) }) # 视图层: def add_json(request): if request.method==\'GET\': return render(request,\'jsonfile.html\') import json res=json.loads(request.body.decode(\'utf-8\')) # json数据从body体内取值 dic={\'status\':\'100\',\'msg\':\'登录成功\'} # return HttpResponse(\'ok\') # 返回给前台json格式 # return HttpResponse(json.dumps(dic)) return JsonResponse(dic) # 直接返回json字符串
补充知识点
补充知识点(1)
JQ 显示文字 data.status
$(\'.div\').text(\'xx\'):修改标签内容
补充知识点(2)
静态文件导入(3种)
作业:
1 用户在表单输入用户名与密码,通过Ajax提交给服务器,服务器验证后返回响应信息,客户端通过响应信息确定是否登录成功,
成功,则跳转到百度,否则,在页面上显示相应的错误信息location.href=\'http://www.baidu.com\'
2 两种提交数据的方式(urlencoded,json)
3 手动创建第三张表:
给红楼梦这本书新增lqz作者
给红楼梦这本书删除egon作者
把红楼梦这本书所有作者替换为lqz
查询红楼梦这本书所有作者的的姓名
查询作者名为lqz写的所有书
4 上课讲的敲一遍
ajax 上传文件/提交jsan格式的数据 前后端数据交互