Django之ajax(jquery)封装(包含 将 csrftoken 写入请求头方法)

由于支持问题,未使用 es6 语法

_ajax.js

1/** 2 * 发起请求 3 * @param url 请求地址 4 * @param data 请求数据 { } json格式 5 * @param type 请求类型 get|post 6 * @param success 请求成功回调方法(如果支持es6,使用 Promise 更方便) 7 * @param fail 请求失败回调方法 8 */ 9function jqAjax(url, data, type, success, fail) { 10 _ajaxSetup(); // 先将 csrftoken 写入请求头,避免被django拒绝 11 $.ajax({ 12 "url": url, 13 "type": type, 14 "data": data, 15 "timeout": 5000, 16 "beforeSend": function (xhr) { 17 18 }, 19 "success": function (res) { 20 if (res.code === 200) { 21 if (success) { 22 console.log(res); 23 success(res.data) 24 } 25 } else { 26 if (fail) { 27 fail(res) 28 } 29 console.log(res.code + ":" + res.message) 30 } 31 }, 32 "error": function (e) { 33 console.log(e) 34 if (fail) { 35 fail(e) 36 } 37 } 38 }); 39} 40 41 42/** 43 * 快捷发起get请求 44 * @param url 地址(因为是django项目的静态文件,地址不需要加ip与端口) 45 * @param data 数据 { } json 46 * @param success 请求成功方法 47 * @param fail 请求失败的方法 48 * @private 49 */ 50function _get(url, data, success) { 51 jqAjax(url, data, "get", success) 52} 53 54 55/** 56 * 快捷发起post请求 57 * @param url 地址(因为是django项目的静态文件,地址不需要加ip与端口) 58 * @param data 数据 { } json 59 * @param success 请求成功方法 60 * @param fail 请求失败的方法 61 * @private 62 */ 63function _post(url, data, success) { 64 jqAjax(url, data, "post", success) 65} 66 67 68 69// 下面两个方法主要处理django中的csrftoken验证问题 70// 将csrftoken写入当前请求头 71function _ajaxSetup() { 72 $.ajaxSetup({ 73 beforeSend: function (xhr, settings) { 74// console.log(getCookie('csrftoken')); 75 if (!/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type) && !this.crossDomain) { 76 xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 77 } 78 } 79 }); 80} 81 82function getCookie(name) { 83 var cookieValue = null; 84 if (document.cookie && document.cookie !== '') { 85 var cookies = document.cookie.split(';'); 86 for (var i = 0; i < cookies.length; i++) { 87 var cookie = jQuery.trim(cookies[i]); 88 // Does this cookie string begin with the name we want? 89 if (cookie.substring(0, name.length + 1) === (name + '=')) { 90 cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 91 break; 92 } 93 } 94 } 95 return cookieValue; 96}

如果你希望成功,当以恒心为良友,以经验为参谋,以当心为兄弟,以希望为哨兵。——爱迪生

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang