zoukankan      html  css  js  c++  java
  • Django之AJAX简单使用

      

    AJAX简介:

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

     

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

     

        AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

     

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

     

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

     

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

     

       AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;

     

    AJAX请求‘Content-Type'三种类型:

    前端js进行http请求和后端代码进行数据传输的消息格式:

     &连接的赋值序列:'Content-Type':'application/x-www-form-urlencoded'(默认)

     片段数据:'Content-Type':'multipart/form-data'(上传文件使用,同时请求方式为postdjango自动识别解析,文件为request.FILES

     json字符串:'Content-Type':'application/json'(请求数据为json字符串时需要指定,django不能自动识别,需要对request.body进行手动解析操作)

     

    AJAX的简单使用:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
     6     <title>login</title>
     7 </head>
     8 <body>
     9 <div>
    10     用户名:<input type="text" name="username" id="username">
    11     密码:<input type="password" name="password" id="password">
    12     <input type="button" id="submit" value="提交">{% csrf_token %}
    13     <span id="status"></span>
    14 </div>
    15 </body>
    16 <script>
    17     //以post方式请求(csrf)
    18     $(function () {
    19         $('#submit').click(function () {
    20             $.ajax({
    21                 url: "{% url 'auth' %}",//请求路径
    22                 type: 'post',            //请求方式
    23                 data: {                  //请求数据(post请求的csrf认证键值对固定)
    24                     username: $('#username').val(),
    25                     password: $('#password').val(),
    26                     csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
    27                 },
    28                 success: function (response) {//请求回调函数
    29                     if (response == 1) {
    30                         location.href = "{% url 'index' %}"
    31                     } else {
    32                         $('#status').text('账号或密码有误!')
    33                     }
    34                 }
    35             })
    36         })
    37     })
    38  
    39     //以get方式请求
    40     $(function () {
    41         $('#submit').click(function () {
    42             $.ajax({
    43                 url:"{% url 'auth' %}",
    44                 type:'get',
    45                 data:{
    46                     username: $('#username').val(),
    47                     password: $('#password').val(),
    48                 },
    49                 success:function (response) {
    50                     if(response==1){
    51                         location.href="{% url 'index' %}"
    52                     }else{
    53                        $('#status').text('账号或密码有误!')
    54                     }
    55                 }
    56             })
    57         })
    58     })
    59 </script>
    60  
    61 </html>
    login.html

    urls.py

    1 urlpatterns = [
    2     url(r'^login/',views.login,name='login'),
    3     url(r'^auth/',views.auth,name='auth'),
    4     url(r'^index/',views.index,name='index'),
    5 ]

     views.py

     1 def login(request):
     2     if request.method == 'GET':
     3         return render(request, 'login.html')
     4 #ajax请求的处理视图函数
     5 def auth(request):
     6     #POST请求
     7 if request.method == 'POST':
     8     name = request.POST.get('username')
     9     psd = request.POST.get('password')
    10     print(name, psd, type(name), type(psd))
    11     if name == "yang" and psd == '123':
    12         status = 1
    13     else:
    14         status = 0
    15     return HttpResponse(status)
    16 #GET请求
    17 if request.method == 'GET':
    18     if request.GET.get('username') == 'yang' and request.GET.get('password') == '123':
    19         status = 1
    20     else:
    21         status = 0
    22     return HttpResponse(status)
    23  
    24 def index(request):
    25     return render(request, 'index.html')
    views.py

    AJAX请求CSRF认证cookie处理:

    <script src="{% static 'js/jquery.cookie.js' %}"></script>

    <script>

        $.ajax({

      url: "/cookie_ajax/",

      type: "POST",

      headers: {"X-CSRFToken": $.cookie('csrftoken')},  // Cookiecsrftoken,并设置到请求头中

      data: {"username": "chao", "password": 123456},

      success: function (data) {

        console.log(data);

      }

    })

    </script>

  • 相关阅读:
    C89:论内存泄漏
    C++03:模板
    C++的STL(标准模板库)系列:容器——string容器
    C++03:论类的友元函数和内联函数
    C++03:论类的运算符重载
    Windows开发:网络编程基础
    Windows开发:论文件和权限
    C89:头文件
    C89:论符号
    纪录片(深度好片)
  • 原文地址:https://www.cnblogs.com/open-yang/p/11222373.html
Copyright © 2011-2022 走看看