• AJAX


    AJAX的特点

    1. 异步
    2. 局部刷新

    AJAX的优缺点

    优点:

    • AJAX使用JavaScript技术向服务器发送异步请求;
    • AJAX请求无须刷新整个页面;
    • 因为服务器响应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高; 

    jQuery实现的AJAX

    最基本的jQuery发送AJAX请求示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>ajax_add</title>
    </head>
    <body>
    <input type="text" id="i1" name="i1">+
    <input type="text" id="i2" name="i2">=
    <input type="text" id="i3" name="i3">
    <input type="submit" id="i4">
    <input type="submit" id="i5" value="post_add">
    {% csrf_token %}
    <script src="/static/jquery-3.3.1.js"></script>
    <script>
        $('#i4').on("click", function () {
    
            $.ajax({
                url:"/index/",
                type:'GET',
                data:{"i1":$('#i1').val(), "i2":$("#i2").val()},
                success:function (data) {
                    $("#i3").val(data);
                }
            })
    
        })
        $("#i5").on("click", function () {
            var csrf = $("[name='csrfmiddlewaretoken']").val()
            $.ajax({
                url:'/post_index/',
                type:'POST',
                data:{"i1":$("#i1").val(), "i2":$("#i2").val(), 'csrfmiddlewaretoken':csrf},
                success:function (data) {
                    $("#i3").val(data);
                }
            })
        })
    </script>
    </body>
    </html>

    AJAX参数

    data参数中的键值对,如果值值不为字符串,需要将其转换成字符串类型。

     $("#b1").on("click", function () {
        $.ajax({
          url:"/ajax_add/",
          type:"GET",
          data:{"i1":$("#i1").val(),"i2":$("#i2").val(),"hehe": JSON.stringify([1, 2, 3])},
          success:function (data) {
            $("#i3").val(data);
          }
        })
      })

    AJAX请求如何设置csrf_token

    方式1

    通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。

    $("#i5").on("click", function () {
            var csrf = $("[name='csrfmiddlewaretoken']").val()
            $.ajax({
                url:'/post_index/',
                type:'POST',
                data:{"i1":$("#i1").val(), "i2":$("#i2").val(), 'csrfmiddlewaretoken':csrf},
                success:function (data) {
                    $("#i3").val(data);
                }
            })
        })

    方式2

    可以使用$.ajaxSetup()方法为ajax请求统一设置

    在/static/中新建一个js文件,将此段代码粘贴进去,就可以实现统一请求设置了,不需要再在ajax请求的data中写上述方法的数据

    
    
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie !== '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) === (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    var csrftoken = getCookie('csrftoken');

    function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } });

    序列化

    Django内置的serializers

    def books_json(request):
        book_list = models.Book.objects.all()[0:10]
        from django.core import serializers
        ret = serializers.serialize("json", book_list)
        return HttpResponse(ret)

    SweetAlert插件示例

    下载Bootstrap-sweetalert项目

    $(".btn-danger").on("click", function () {
      swal({
        title: "你确定要删除吗?",
        text: "删除可就找不回来了哦!",
        type: "warning",
        showCancelButton: true,
        confirmButtonClass: "btn-danger",
        confirmButtonText: "删除",
        cancelButtonText: "取消",
        closeOnConfirm: false
        },
        function () {
          var deleteId = $(this).parent().parent().attr("data_id");
          $.ajax({
            url: "/delete_book/",
            type: "post",
            data: {"id": deleteId},
            success: function (data) {
              if (data.status === 1) {
                swal("删除成功!", "你可以准备跑路了!", "success");
              } else {
                swal("删除失败", "你可以再尝试一下!", "error")
              }
            }
          })
        });
    })
  • 相关阅读:
    Eclipse背景颜色修改
    Android动画效果translate、scale、alpha、rotate详解
    代理上网的方法
    ubuntu系统使用SSH免密码登陆
    Git的思想和基本工作原理
    GitHub详细教程
    Ubuntu和Redhat(Debian)的差别
    T2: 一种能累积计算积分的EC2实例类型
    win server 2008 r2 iis+php 500错误内部服务器错误。
    从OTF字体文件里查找字体名称
  • 原文地址:https://www.cnblogs.com/yddyy/p/9468118.html
Copyright © 2020-2023  润新知