首页 > Web开发 > 详细

Django与AJAX

时间:2020-05-12 00:43:38      阅读:59      评论:0      收藏:0      [点我收藏+]

AJAX简介

AJAX中文就是“异步的Javascript和XML”。即使用JavaScript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据本仅仅时XML)

AJAX不是新的编程语言,而是一种现有的标准新方法

AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行

  同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

  异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求

下面举个AJAX应用小示例:

页面输入两个整数,通过AJAX传输到后端计算并返回结果局部刷新。

技术分享图片 HTML

 

技术分享图片 views.py

 

AJAX优点:

  1.AJAX使用JavaScript技术向服务器发送异步请求。

  2.AJAX请求无需刷新整个页面

  3.因为服务器相应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高。

  4.两个关键点:1.局部刷新 2.异步请求

contentType前后端传输数据编码格式(******)

前后端传输数据编码格式:

  1.urlencoded

  2.formdata

  3.json

下面我们研究两个 一个是 form表单  另一个是 ajax提交数据

form表单

  默认使用的编码格式是urlencoded

     数据格式:      技术分享图片

 

     django后端针对urlencoded编码格式的数据会自动解析并放到request.POST中供用户获取

  可以修改为formdata传文件

    django后端针对只要是符合urlenocded编码格式的数据(name=jason&pwd=123)都会自动解析并放到request.POST中供用户获取

    如果是文件 只要你指定的编码是formdata 就会自动解析并放到request.FILES中

    总结:前后端传输数据的时候,一定要保证数据格式和你的编码格式是一致的 

ajax提交数据

ajax默认数据提交方式也是urlencoded

ajax发送json格式数据

 django后端针对json格式的数据,并不会自动解析放到request.POST或者request.FILES里面

 它并不会解析json格式数据 而是将它原封不动的放在request.body中了

技术分享图片 JSON传输

ajax传输文件

 ajax传输文件 建议使用内置对象formdata   var formdata = new FormData()

 formdata既可以传普通的键值对,也可以传文件

  传文件标签所存储的文件对象固定语法:

    1.先使用jQuery查找到存储文件的input标签

    2.将jQuery查找到存储文件的Input标签

    3.利用原生js对象的方法 .files[0]获取到标签内部存储的文件对象

    4.一定要指定两个参数都为false  processData:false    contentType:false 

技术分享图片 ajax传文件

    同样后端接收用 request.POST   request.FILES

序列化组件

技术分享图片 序列化组件代码

Sweetalert搭建页面

 <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>

Django与AJAX

原文:https://www.cnblogs.com/zhukaijian/p/12873370.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!