9 HTML&JS等前端知识系列之Ajax post请求带有token向Django请求
我们 在母板上写入这段代码:
<script type="text/javascript">
// 个人定义大函数,不是重点,可以忽略
$(document).ready(function(){
get_sys_load();
var active_node = $("#mainnav-menu a[href='{{ request.path }}']");
active_node.parent().addClass("active-link");
if (active_node.parent().parent().hasClass("collapse")){
active_node.parent().parent().addClass("in");
}
});//end doc ready
// 个人定义大函数,不是重点,可以忽略
function get_sys_load(){
$.ajax({
url: "{% url 'get_server_host_status' %}",
type: "GET",
dataType: "json",
success: function(callback){
for( i in callback){
console.log(i,callback[i]);
$('#'+ i +'_display').text(callback[i]);
$('#'+ i +'_width').text(callback[i]);
$('#'+ i +'_attr').css('width',callback[i]+'%')
}// end for
},// end sucess func
error: function(callback){
alert(callback)
}// end error func
})
}
// 这个才是重点的代码,必须写
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;
}
// 这个才是重点的代码,必须写
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
csrftoken = getCookie('csrftoken');
$.ajaxSetup({ //添加头部信息,csrftoken, 把token塞入头部
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
</script>
{% block bottom-js %}
{% endblock %}
我们在子板上调用这端js代码,调用的前提是子板的html页面必须嵌套了这个 csrf_token, 代码如下
html页面的代码:
==================
<span>{% csrf_token %}</span>
==================
======JQuery代码 =======
{% block bottom-js %}
<script>
function run_cmd(){ //由于 ajaxSetup 设置好了token,所以我们可以直接提交数据了!
var input_cmd = $('textarea').val();
$.ajax({
url:"{% url 'put_cmd' %}",
type:'POST',
dataType:'json',
data:{'host_id':$('#host_id').text(),'minion_name':$('#minion_id').text(),'cmd':input_cmd},
success: function(callback){
console.log(callback)
}, // end success
error: function (callback) {
console.log(callback);
$('code').append(callback)
}
})
}
function show_result(content){
}
</script>
{% endblock %}
此时,我们在提交post请求,就能够正常提交了,可以参考官网的信息:https://docs.djangoproject.com/en/dev/ref/csrf/#ajax。
9 HTML&JS等前端知识系列之Ajax post请求带有token向Django请求的更多相关文章
- 8 HTML&JS等前端知识系列之Ajax的例子
what is ajax ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...
- 3 HTML&JS等前端知识系列之javascript的基础
preface 作为一名运维开发,必须懂得前端知识,比如javascript,dom等等,下面就聊聊javascript. include 数据格式 条件判断,循环流程等. 函数 面向对象 what ...
- 8 HTML&JS等前端知识系列之jquery的自定义方法
preface 有时候我们在前端写jquery的时候,会自己自定义些方法,这样可以不需要重复造轮子.先说说2种自定义方法的区别: 不跟在选择器后面的 跟在选择器后面的. 那下面说说如何自定义jquer ...
- 5 HTML&JS等前端知识系列之jquery基础
preface jquery其实就是对javascript的再次封装,方便我们开发者调用,下载地址是:http://jquery.com/download/ ,下面就说说常用使用方法 选择器 基本选择 ...
- 4 HTML&JS等前端知识系列之Dom的基础
preface 主要聊聊dom的编程,包含下面的内容: what's the dom dom选择器 innerText 替换或写入文本 value 获取input,select,textarea的值 ...
- 7 HTML&JS等前端知识系列之jquery的事件绑定
preface 我们知道,每一个a,input等等标签都可以为其绑定一个事件,onclick也好,focus 也罢,都可以绑定的.但是众神key想过这个问题没有,倘若这里有1000个input标签需要 ...
- web前端知识大纲:系列一 js篇
web前端庞大而复杂的知识体系的组成:html.css和 javascript 一.js 1.基础语法 Javascript 基础语法包括:变量声明.数据类型. ...
- 大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app
大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWx ...
- JS前端知识模块大全
公司前端:小胖提供,表示感谢 1. 基础 HTML, CSS, JS 文档 W3CSCHOOL: http://www.w3schools.com/ MDN: https://developer.mo ...
随机推荐
- bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案
前言 最近在使用bootstrap的popover插件,效果如下: popover插件的focus模式时表现为当点击按钮时弹出浮动层,在点击浮动层外的任何一处,都隐藏浮动层. 但是在mac下的Safa ...
- sql server死锁神器
参考文章: http://blogs.msdn.com/b/sqlserverfaq/archive/2013/04/27/an-in-depth-look-at-sql-server-memory- ...
- X240s安装Win7 以及如何启用ExpressCache
新买了一台X240S笔记本,尝试了带的Win8正版一个月后,实在无法适应Win8,干脆退回Win7完事,以下为安装过程, 第一步:制作启动U盘 首先,下载一个iso格式的Win7安装镜像文件,利用微软 ...
- C语言之Sleep函数
Sleep函数: 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include <windows.h& ...
- 中继器、集线器(HUB)、网桥、交换机、路由器比较
中继器或集线器既不能隔离冲突域又不能隔离广播域,网桥或交换机只能隔离冲突域不能隔离广播域,路由器既能隔离冲突域又能隔离广播域,为什么?[解析] 首先要清楚什么是冲突域和广播域,当一块网卡发送信息时有可 ...
- android之fragment的使用
android中的fragment与html中的div很类似,下图中通过左边的按键可以控制右边的显示内容.右边的内容就是一个fragment,通过点击按键来控制fragment的实现. 工程目录 需要 ...
- springmvc整合fastjson
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- STL中algorithm里的查找
首先,选择查找算法时,区间是否排序是一个至关重要的因素.可以按是否需要排序区间分为两组: A. count,find B. binary_search,lower_bound,upper_bound, ...
- android 使用多个接口
今天,好久没有这么用过都忘记可以这样用了.来记录下: 一个类想要使用多个接口可以implements 接口1 , 接口2,...
- TODO: http框架HttpManager的实现
提供get, post, 同步, 异步方式访问网络