Django ajax的概念和基于ajax的form表单上传和ajax的csrf认证

ajax常见的参数

type: "post",
contentType: "application/json; charset=utf-8",//请求时候的传参类型
dataType: "json",          //返回值类型
url: "ajax/getData",       发送请求的地址  默认为当前页地址
data:JSON.stringify(json),
timeout:80                  //要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
async: True  //默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必      
             //须等待请求完成才可以执行
success: function(data){   //成功回调函数
    console.log(data);
},
error : function(msg) {    //错误回调函数
    console.log(msg);

ajax接受的数据类型 ContentType

ContentType:application/x-www-form-urlencoded :

中默认的encType,form表单数据被编码为key/value格式发送到服务器
(表单默认的提交数据的格式)默认的是urlencoded编码格式 对应的form表单的enctype是multipart/form-data 用来上传文件 用request.FILES获取对象

ContentType:urlencode 对应的form表单的enctype是application/x-www-form-urlencoded 请求体内容为(a=1&b=2&c=3),也会按照这种url的构
成形式进行解码, request.POST和request.BODY都可以取到值,
只不过request.POST按照url的格式解析成了字典格式,而request.BODY解析的是a=1&b=2的字符串
ContentType:application/json 对应的json字符串 用request.body获取请求体内容
ContentType:application/xhtml+xml :XHTML格式
ContentType:application/xml : XML数据格式
ContentType:application/atom+xml :Atom XML聚合格式
ContentType:application/json : JSON数据格式
ContentType:application/pdf :pdf格式
ContentType:application/msword : Word文档格式
ContentType:application/octet-stream : 二进制流数据(如常见的文件下载)

基于ajax实现的账号密码校验

基于Form表单实现的文件上传

form的action 如果加aaa/ 那么发送请求的网址是:当前url/aaa/ 如果加/aaa/ 那么当前网址会被覆盖请求的url是:/aaa/

基于ajax实现form标签的文件上传

如果用ajax实现上传,需要加入下面2个参数
contentType:false, //其代表的是 前端发送数据的格式,设置false表示禁用数据格式转换
processData:false,   //默认情况下,processData 的值是 true,其代表以对象的形式上传的数据都会被转换为字符串的形式上传。而当上传文件的时候,则不需要把其转换为字符串,因此要改成false

ajax的csrf验证

第一种,html中写上{{% csrf_token %}},然后ajax代码中做设置如下

第二种 直接把csrf写在js脚本.

$.ajax({
  url: "/my/cal/",
  type: "post",
  data: {
  "n1": $(".num1").val(),
  "n2": $(".num2").val(),
  "csrfmiddlewaretoken":'{{ csrf_token }}',
 },
原文地址:https://www.cnblogs.com/Young-shi/p/15256225.html