• Ajax


    json的用法

    在python中json的用法:序列化 json.dumps() 反序列化 json.loads()

    在js中,序列化json.stringfy() 反序列化 json.parse()

    AJAX简介

    AJAXAsynchronous Javascript And XML)翻译成中文就是异步JavascriptXML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。

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

    AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

    语法

    #通常放在事件当中
    <script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>#引用jquery的cookie用法 $("button").click(function () { $.ajax({ {# 请求url#} url:"/send_ajax/", {# 请求方式#} type:"get",
           data{
              name:"wate",
              csrfmiddlewaretoken:$.cookie("csrftoken"),#这种方式需要引入cookie
              csfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val()#跨站请求伪造
          }, sucess:function(data){#data为视图中返回的字符串#} { alert("ok") },
                error: function (jqXHR, textStatus, err) {
    
                            // jqXHR: jQuery增强的xhr
                            // textStatus: 请求完成状态
                            // err: 底层通过throw抛出的异常对象,值与错误类型有关
                            console.log(arguments);
                        },
                    complete: function (jqXHR, textStatus) {
                        // jqXHR: jQuery增强的xhr
                        // textStatus: 请求完成状态 success | error
                        console.log('statusCode: %d, statusText: %s', jqXHR.status, jqXHR.statusText);
                        console.log('textStatus: %s', textStatus);
                    },
    
                    //=================== statusCode============
                    statusCode: {
                        '403': function (jqXHR, textStatus, err) {
                            console.log(arguments);  //注意:后端模拟errror方式:HttpResponse.status_code=500
                         },
    
                        '400': function () {
                        }
                    }
    
    }) })

    实例

    view.py

    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    
    def send_ajax(request):
        return HttpResponse("wate")
    
    
    def index(request):
        return render(request,"index.html")

    urls.py

    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^send_ajax/', views.send_ajax),
    ]

    index.xml

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
    </head>
    <body>
    <button>sendajax</button><span class="error"></span>
    
    
    <script>
        $("button").click(function () {
            $.ajax({
    {#            请求url#}
                url:"/send_ajax/",
    {#            请求方式#}
                type:"get",
    {#            data是send)ajax HttpResponse的内容#}
                success:function(data)
                {
                    $(".error").html(data)
                }
            })
        })
    </script>
    </body>
    </html>

    contentType设置以什么编码方式

    ######################------------contentType---------################
    
    contentType:默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。
                 用来指明当前请求的数据编码格式;urlencoded:?a=1&b=2;如果想以其他方式提交数据,
                 比如contentType:"application/json",即向服务器发送一个json字符串:
                   $.ajax("/ajax_get",{
                 
                      data:JSON.stringify({
                           a:22,
                           b:33
                       }),
                       contentType:"application/json",
                       type:"POST",
                 
                   });                          //{a: 22, b: 33}
    
                 注意:contentType:"application/json"一旦设定,data必须是json字符串,不能是json对象
    
                 views.py:   json.loads(request.body.decode("utf8"))

    给sendajax按钮绑定点击事件,然后利用ajax给发送请求到后端函数中,并从后端获取返回值赋给data。

    计算实例

    index.xml

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
    </head>
    <body>
    <button>sendajax</button><span class="error"></span>
    
    <p><input type="text" name="num_one" class="num1">+<input type="text" name="num_two" class="num2">=<input type="text" class="value_num"><button class="add">计算</button></p>
    
    <script>
        $(".add").click(function () {
    
            $.ajax({
    {#            请求url#}
                url:"/send_ajax/",
    {#            请求方式#}
                type:"get",
    {#data 给后端传值,后端通过request.GET.get("num_one")获取这里的值#}
                data:{
                    "num_one":$(".num1").val(),
                    "num_two":$(".num2").val(),
                },
                success:function(data)
                {
                    $(".value_num").val(data)
                }
            })
        })
    </script>
    </body>
    </html>

    view.py

    def send_ajax(request):
        x=request.GET.get("num_one")
        y=request.GET.get("num_two")
        ret=int(x)+int(y)
    
        return HttpResponse(str(ret))

     

  • 相关阅读:
    Altium_Designer-原理图库如何添加低电平有效的管脚?
    Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?
    Altium_Designer-各种布线总结
    Altium_Designer-PCB中各层作用详解
    AD的命名规则 AD常用产品型号命名规则
    Altium_Designer如何快速寻找元件和封装
    Makedown语法说明
    使用Atom编写Makedown
    Vim基本命令
    Python-Django框架学习笔记——第二课:Django的搭建
  • 原文地址:https://www.cnblogs.com/kunixiwa/p/7944813.html
Copyright © 2020-2023  润新知