Ajax (Asynchronous Javascript And XML )

特点:  异步  页面局部刷新  传递的数据量小

ajax 请求返回数据 重定向 location.href='/index/'

  1. 发请求的途径

    1. a标签 GET
    2. form表单 GET /POST
    3. 地址栏中输入地址回车 GET
  2. ajax

    1. 使用js的技术发请求的一个方式
    2. 特点: 异步 页面局部刷新 传输的数据量小
  3. 参数

    $.ajax({
    url: '/ajax_test/', // 请求的地址
    type: 'post', // 请求的方式
    data: { // 请求的数据
    name: 'alex',
    age: '73',
    hobby: JSON.stringify(['吃烧饼', '画大饼', '卖烧饼'])
    },
    success: function (res) { // 正常响应的回调函数
    $('[name="ii3"]').val(res)
    },
    error:function (res) { // 错误响应的回调函数
    console.log(res)
    }
    })
  4. 上传文件

    $('#b1').click(function () {
    var form_obj = new FormData();
    form_obj.append('f1',$('[name="f1"]')[0].files[0])
    $.ajax({
    url:'/upload/',
    type:'post',
    processData:false, // 不需要处理数据编码格式
    contentType:false, // 不需要处理请求头
    data:form_obj,
    success:function (res) {
    alert(res)
    }
    })
    })

    视图中

    def upload(request):
    if request.is_ajax():
    file_obj = request.FILES.get('f1')
    with open(file_obj.name, 'wb') as f:
    for chunk in file_obj.chunks(): # chunks() 以片段的形式获取 去每一个片段
    f.write(chunk)
    return HttpResponse('上传成功')
    return render(request, 'upload.html')

ajax可以提交POST请求的方式

  1. 页面中使用{% csrf_token %},给POST提交数据中添加csrfmiddlewaretoken的键值对

    data: {
    'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val(),
    i1: $('[name="i1"]').val(),
    i2: $('[name="i2"]').val()
    },
  2. 添加X-csrftoken的请求头

    headers:{
    'X-csrftoken': $('[name="csrfmiddlewaretoken"]').val(),
    },
  3. 写文件 定义一个js 文件 ajax_setup.js

    从cookie中获取值,添加到请求头中。

    必须确保有csrftoken的cookie

    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 中的 ajax的更多相关文章

  1. Django中的Ajax

    Ajax 很多时候,我们在网页上请求操作时,不需要刷新页面.实现这种功能的技术就要Ajax!(本人定义,不可迷信) jQuery中的ajax就可以实现不刷新页面就能向后台请求或提交数据的功能,我们仍然 ...

  2. django中的ajax组件

    目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...

  3. Django中的Ajax详解

    AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当 ...

  4. django中使用Ajax

    内容: 1.Ajax原理与基本使用 2.Ajax发送get请求 3.Ajax发送post请求 4.Ajax上传文件 5.Ajax设置csrf_token 6.django序列化 参考:https:// ...

  5. django中给ajax提交加上csrf

    代码来自djangoproject网站 在html中的script标签下插入下面代码 在html文档加载时候运行下面代码,并且使用$.ajaxSetup设置ajax每次调用时候传入的数据,$.ajax ...

  6. django中的Ajax文件上传

    主要介绍两个 1.ajax文件上传 2.写路由器 3.创建对应的函数 4.file_put.html代码 <!DOCTYPE html> <html lang="en&qu ...

  7. django中使用AJAX时如何获取表单参数(按钮携带参数)

    前提是函数和相应的视图路由都已经配置好了,然后就是表单了: <form id="SmsForm" method="post" class="a& ...

  8. Django 中CSRF中间件 'django.middleware.csrf.CsrfViewMiddleware',

    1.Django中CSRF中间件的工作原理及form表单提交需要添加{% csrf_token %}防止出现403错误 CSRF # 表示django全局发送post请求均需要字符串验证功能:防止跨站 ...

  9. Django中关于“CSRF verification failed. Request aborted”的问题

    遇到该问题的情境 在Django中采用Ajax提交表单,涉及到跨域问题. 解决措施 在html页面中的表单内添加如下代码: {% csrf_token %} 在视图函数所在的py文件中添加如下代码: ...

随机推荐

  1. mybatis教程4(动态SQL)

    动态SQL语句 MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空 ...

  2. [AGC 018 E] Sightseeing plan

    STO ZKY ORZ Description 给定一张网格图和三个矩形,每次只能向上或向右走.你需要从矩形 \(A\) 中的一个点 \(S\) 出发,到达矩形 \(B\) 中的一个点 \(P\) , ...

  3. XCode - App installation failed (A valid provisioning profile for this executable was not found)

    OSX:10.14 XCode:10.1 iPhone:iPhone 4S IOS9.3.5 我不得不骂那些SB们,不懂就别TMD乱写文章,误导别人!!我今天看了很多关于这个错误的中文文章,结果都没能 ...

  4. python基础小结

    1.常用的格式符号 2.input函数 3.在程序中,看到了%这样的操作符,这就是python中的格式化输出 age = 18 name = "xiaohua" print(&qu ...

  5. Java使用for循环输出菱形

    /** * This program would print out a diamond * @param row the row of diamond * @version 2018-7-23 * ...

  6. 浏览器与Tomcat交互

    浏览器与Tomcat交互 Web开发者都知道在Tomcat下部署应用后启动Tomcat即可通过浏览器与Tomcat建立连接. 那么二者之间的连接建立过程是怎么样的呢?(在此,我们不具体讲述关于网络底层 ...

  7. mysql之数据备份与还原

    mysql数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中 ...

  8. MySQl创建用户和授权

    权限的管理: 如何创建用户和密码 给当前的用户授权 移除当前用户的权限 首先进去到mysql数据库下: mysql> use mysql Database changed 其次, 对新用户进行增 ...

  9. 【读书笔记】iOS-Game Kit

    名字虽然叫Game Kit,但是Game Kit并不是仅仅开发游戏用的,它为开发者提供了两个非常实用的功能:使用Bonjour通过蓝牙进行点对点的网络传输功能,以及应用内语音聊天功能.有意思的是,语音 ...

  10. python之约束, 异常处理, md5

    1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点) 2. 抽象类和抽象方法 # 语法 # from abc import ABCMet ...