AJAX中文就是“异步的Javascript和XML”。即使用JavaScript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据本仅仅时XML)
AJAX不是新的编程语言,而是一种现有的标准新方法
AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行
同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求
下面举个AJAX应用小示例:
页面输入两个整数,通过AJAX传输到后端计算并返回结果局部刷新。
1.AJAX使用JavaScript技术向服务器发送异步请求。
2.AJAX请求无需刷新整个页面
3.因为服务器相应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高。
4.两个关键点:1.局部刷新 2.异步请求
前后端传输数据编码格式:
1.urlencoded
2.formdata
3.json
下面我们研究两个 一个是 form表单 另一个是 ajax提交数据
默认使用的编码格式是urlencoded
数据格式:
django后端针对urlencoded编码格式的数据会自动解析并放到request.POST中供用户获取
可以修改为formdata传文件
django后端针对只要是符合urlenocded编码格式的数据(name=jason&pwd=123)都会自动解析并放到request.POST中供用户获取
如果是文件 只要你指定的编码是formdata 就会自动解析并放到request.FILES中
总结:前后端传输数据的时候,一定要保证数据格式和你的编码格式是一致的
ajax默认数据提交方式也是urlencoded
ajax发送json格式数据
django后端针对json格式的数据,并不会自动解析放到request.POST或者request.FILES里面
它并不会解析json格式数据 而是将它原封不动的放在request.body中了
ajax传输文件
ajax传输文件 建议使用内置对象formdata var formdata = new FormData()
formdata既可以传普通的键值对,也可以传文件
传文件标签所存储的文件对象固定语法:
1.先使用jQuery查找到存储文件的input标签
2.将jQuery查找到存储文件的Input标签
3.利用原生js对象的方法 .files[0]获取到标签内部存储的文件对象
4.一定要指定两个参数都为false processData:false contentType:false
同样后端接收用 request.POST request.FILES
<script> $(‘.del‘).on(‘click‘, function () { var $btEle = $(this); swal({ title: "Are you sure?", text: "Your will not be able to recover this imaginary file!", type: "warning", showCancelButton: true, confirmButtonClass: "btn-danger", confirmButtonText: "Yes, delete it!", closeOnConfirm: false }, function () { $.ajax( { url:‘{% url ‘delete_book‘ %}‘, type:‘post‘, data:{‘user_id‘:$btEle.attr(‘user_id‘)}, success:function (data) { if (data.code == 100){ $btEle.parent().parent().remove(); swal("Deleted!", "Your imaginary file has been deleted.", "success"); } else { swal("删除失败","出现Bug了",‘error‘) } } } ) }); }) </script>
原文:https://www.cnblogs.com/zhukaijian/p/12873370.html