由于支持问题,未使用 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}
如果你希望成功,当以恒心为良友,以经验为参谋,以当心为兄弟,以希望为哨兵。——爱迪生