前端之js、jquery、ajax、mui、ui
<link rel="shortcut icon" href="{% static 'img/luffy-study-logo.png' %} "> <link rel="stylesheet" href="{% static 'plugins/font-awesome/css/font-awesome.css' %} "/> <link rel="stylesheet" href="lib/example.css"> <link rel="icon" href="//s01.mifile.cn/favicon.ico" type="image/x-icon">
#js、jquery引入 <script src="{% static 'plugins/jquery/jquery.min.js' %}"></script> <script type="text/javascript" src="/static/js/jquery-ui.min.js"></script> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
#判断语句 if("{{ pk }}"=="0"){ url="{% url 'createproject' %}" }else{ url="{% url 'editproject' pk %}" } if(Object.values(res.msg.unreachable).length !=0){ var data_unreachable=res.msg.unreachable; $.each(data_unreachable,function (k,v) { msg=msg+"<font color=red>"+ k + "| UNREACHABLE! >>\n"; msg=msg+v.command.msg+"</font>\n"; }) }
#循环语句 var minute_select = $("#minute_select"); minute_select.append("<option value=*>*</option>"); for (var i = 0; i < 60; i++) { minute_select.append("<option value=" + i + ">" + i + "</option>"); if (i != 0 && i != 1) { minute_select.append("<option value=*/" + i + ">*/" + i + "</option>") } }
#函数 function (d) { $("#tag_select").append("<option value='"+d+"'>"+d+"</option>") }
$.post(
"http://192.168.11.40:9527/open_toy",
{device_key: device_key},
function (data) {
console.log(data);
if (data.code == 0) {
document.getElementById("title").innerText = data.name;
toy_id = data.toy_id;
create_ws(toy_id);
}
document.getElementById("player").src = "http://192.168.11.40:9527/get_music/" + data.music;
},
"json"
);
websocket的使用
function create_ws(toy_id) {
ws = new WebSocket("ws://192.168.11.40:9528/toy/" + toy_id); // 456
ws.onmessage = function (eventMessage) { //456.onmessage
var recv_msg = JSON.parse(eventMessage.data);
console.log(recv_msg);
if (recv_msg.music) {
document.getElementById("player").src = "http://192.168.11.40:9527/get_music/" + recv_msg.music;
} else {
document.getElementById("from_user").innerText = recv_msg.from_user;
document.getElementById("from_user_type").innerText = recv_msg.friend_type;
document.getElementById("player").src = "http://192.168.11.40:9527/get_chat/" + recv_msg.chat;
}
};
ws.onclose = function () {
create_ws(toy_id);
};
}
js绑定事件
document.getElementById('acc').addEventListener('tap', function() {})
标签的取值与赋值
$("#cron").addClass("active"); $("#tag_select").append("<option value='0'>"+"---------"+"</option>"); $("#commit_select").empty(); $("#count_span").text(0); $("#createBtn").attr('disabled', 'disabled'); //disabled 当前图标不可点 $("#command_text").val(); $("#com_span").html(msg); $("#time_span").text(time); $(".tag_name").hide(); $(".bra_name").show(); $("select").select2();
get与post请求
$.get({ url: "/gettag/" + team_val, success: function (res) { data = res.data; data.forEach(function (d) { $("#tag_select").append("<option value='" + d + "'>" + d + "</option>") }) } })
$.get({ url: "/getcommit/" + team_val + "/" + bra_val, success: function (res) { data = res.data; data.forEach(function (d) { console.log(d); $("#commit_select").append("<option value='" + d.id + "'>" + d.message + "</option>") }) } })
$.post({ url: "{% url 'createcomm' %}", data: { nodes: node_ips, command: $("#command_text").val() }, success: function (res) { var msg=""; $("#createBtn").attr('disabled', null); //disabled 当前图标不可点 $("#iconWait").removeClass("fa fa-spinner fa-spin") //loading console.log(res.msg); if(Object.values(res.msg.ok).length !=0){ var data_ok=res.msg.ok; $.each(data_ok,function (k,v) { msg=msg+"<font color=yellow>"+ k + "| CHANGED | rc=0 >>\n"; msg=msg+v.command.stdout+"</font>\n"; }) } $("#com_span").html(msg); } }) 示例2: $.post("http://192.168.11.40:9527/recv_msg", { from_user: from_user, to_user: toy_id }, function (data) { console.log(data); var chat_info = data.pop(); document.getElementById("player").src = "http://192.168.11.40:9527/get_chat/" + chat_info.chat; document.getElementById("player").onended = function () { if(data.length == 0){ return } document.getElementById("player").src = "http://192.168.11.40:9527/get_chat/" + data.pop().chat; } }, "json")
$("select").select2(); $(".tag_name").hide(); /*通过不同的单选框实现不同的input显示与隐藏*/ $(".id2").change(function () { /* id2:checked代表当前选中的值*/ var type_check = $(".id2:checked").val() if (type_check == "bra") { $(".tag_name").hide(); $(".bra_name").show(); $(".bra_commit").show() } else { /* show 显示 hide 隐藏 empty 清空 */ $(".tag_name").show(); $(".bra_name").hide(); $(".bra_commit").hide(); $(".tag_name").empty(); $("#tag_select").append("<option value='0'>" + "---------" + "</option>") var team_val = $('#id_team').val() || 0; /* 获取tag标签*/ $.get({ url: "/gettag/" + team_val, success: function (res) { data = res.data; data.forEach(function (d) { $("#tag_select").append("<option value='" + d + "'>" + d + "</option>") }) } }) } });
事件绑定
$(".del-user").on("click", function (e) {
e.preventDefault(); //取消原来自带的属性
var url=$(this).attr("data-url");
ui.confirm("请确认是否删除本条记录",function () {
Net.get({
url: url,
reload:true
})
});
})
$('[name="user"]').blur(function () {
$.ajax({
url: '/check/',
type: 'post',
data: {'user': $('[name="user"]').val()},
success: (res) => {
$(this).next().text(res.msg)
}
})
}).focus(function () {
$(this).next().text('')
})
post
$.ajax({
url: serv + "/toy_uploader",
type: 'post',
processData: false,
contentType: false,
data: formdata,
dataType: 'json',
success: function (data) {
console.log(data);
if(data.DATA.code == 0){
document.getElementById("player").src =
"http://192.168.11.40:9527/get_music/SendOK.mp3";
}
var send_str = {
to_user: document.getElementById("from_user").innerText,
from_user: toy_id,
friend_type:data.DATA.friend_type,
chat: data.DATA.filename
};
ws.send(JSON.stringify(send_str));
}
})
$('#b1').click(function () {
var form_obj = new FormData();
form_obj.append('x1', $('#f1')[0].files[0]);
$.ajax({
url: '/upload/',
type: 'post',
data: form_obj,
processData:false,
contentType:false,
success: function (res) {
alert('OK')
}
})
})
$.ajax({
url: `http://127.0.0.1:8080/login?username=${username}`,
type:'get',
success:function (data) {
DOM操作
}
});
$.ajax({
url: url,
data: request,
dataType: "json",
success: function( data ) {
response( data );
},
error: function() {
response([]);
}
});
#前提条件:保证访问的页面有csrftoken的cookie #一:模板中使用csrf_token标签 #二:给视图加装饰器 from django.views.decorators.csrf import ensure_csrf_cookie # 确保访问某个视图有csrf_cookie #方式一: $.ajax({ url: '/calc/', type: 'post', data: { csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val() , i1: $('[name="i1"]').val(), i2: $('[name="i2"]').val(), }, success: function (res) { $('[name="i3"]').val(res) } }) #方式二: $('#b2').click(function () { $.ajax({ url: '/calc2/', type: 'post', headers:{ 'X-csrftoken': $('[name="csrfmiddlewaretoken"]').val(), }, data: { i1: $('[name="ii1"]').val(), i2: $('[name="ii2"]').val(), }, success: function (res) { $('[name="ii3"]').val(res) } }) }); #文件: 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); } } });
mui.init();
var Sdata = null;
mui.plusReady(function() {
Sdata = plus.webview.currentWebview();
document.getElementById("req_info").innerText = Sdata.req_info;
});
document.getElementById('acc').addEventListener('tap', function() {
mui.post(window.serv + '/acc_req',{
req_id:Sdata._id,
remark:document.getElementById("remark").value
},function(data){
},'json'
);
})
var reco = null;
document.getElementById('speech').addEventListener('hold', function() {
mui.toast('按住了');
reco = plus.audio.getRecorder();
reco.record({
filename: "_doc/audio/",
format: "amr"
}, function(file_path) {
// console.log(args_str);
create_upload_task(file_path);
})
});
document.getElementById('speech').addEventListener('release', function() {
mui.toast("松开了");
reco.stop();
});
document.getElementById('add_fri').addEventListener('tap',function () {
mui.openWindow({
url: "scan.html",
id: "scan.html",
extras:{type:"toy",create_toy_id:Sdata._id}
});
})
#index.html中
document.addEventListener("send_chat", function(event) {
var s = JSON.stringify(event.detail);
ws.send(s);
});
#其他文件中调用
mui.fire(index, 'send_chat', {
chat: res.DATA.filename,
to_user: Sdata.friend_id,
from_user: window.localStorage.getItem("user_id")
})
mui.back = function(){};
mui.post(window.serv + '/add_req',{
add_user:user_id,
toy_id:Sdata.toy_id,
add_type:Sdata.add_type,
req_info:req_info,
remark:remark
},function(data){
console.log(JSON.stringify(data));
},'json'
);
$(".create-btn").on("click", function () {
ui.box({
"title":"创建用户",
"remote":{% url 'createuser' %},
});
})
$(".update-btn").on("click", function () {
ui.box({
"title": "创建初始化",
"remote":{% url 'createlog' %},
});
});
ui.confirm("请确认是否删除本条记录",function () {
Net.get({
url: url,
reload:true
})
});
$("#createBtn").on("click",function () {
Net.post({
url:url,
btn:$("#createBtn"),
data:$("#createForm").serialize(),
go:"{% url 'projectall' %}"
})
})
<script type="text/javascript" src="{% static 'plugins/zTree_v3/js/jquery.ztree.core.js' %}"></script>
<script type="text/javascript" src="{% static 'plugins/zTree_v3/js/jquery.ztree.excheck.js' %}"></script>
<script> $("select").select2(); var setting = { view: { selectedMulti: false }, check: { enable: true }, data: { simpleData: { enable: true } }, callback: { onCheck: onCheck } }; var clearFlag = false; function onCheck(e, treeId, treeNode) { count(); if (clearFlag) { clearCheckedOldNodes(); } } function clearCheckedOldNodes() { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), nodes = zTree.getChangeCheckedNodes(); for (var i = 0, l = nodes.length; i < l; i++) { nodes[i].checkedOld = nodes[i].checked; } } function count() { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), checkCount = zTree.getCheckedNodes(true).length, nocheckCount = zTree.getCheckedNodes(false).length, changeCount = zTree.getChangeCheckedNodes().length; if (checkCount > 1) { $("#count_span").text(checkCount - 1); } else { $("#count_span").text(0); } } function createTree() { $.fn.zTree.init($("#treeDemo"), setting, {{ nodes|safe }}); count(); clearFlag = $("#last").attr("checked"); } $(document).ready(function () { createTree(); $("#init").bind("change", createTree); $("#last").bind("change", createTree); }); /* ajax添加csrfkey*/ 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); } } }); $("#createBtn").on("click", function () { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), nodes = zTree.getCheckedNodes(true); node_ips = []; if(nodes.length ==0){ alert("请选择主机") return } if($("#command_text").val() == ""){ alert("请输入命令") return } nodes.forEach(function (node) { if (node.pId) { node_ips.push(node.name) } }); console.log(node_ips); $("#createBtn").attr('disabled', 'disabled'); //disabled 当前图标不可点 $("#iconWait").addClass("fa fa-spinner fa-spin") //loading $.post({ url: "{% url 'createcomm' %}", data: { nodes: node_ips, command: $("#command_text").val() }, success: function (res) { var msg=""; $("#createBtn").attr('disabled', null); //disabled 当前图标不可点 $("#iconWait").removeClass("fa fa-spinner fa-spin") //loading console.log(res.msg); if(Object.values(res.msg.ok).length !=0){ var data_ok=res.msg.ok; $.each(data_ok,function (k,v) { msg=msg+"<font color=yellow>"+ k + "| CHANGED | rc=0 >>\n"; msg=msg+v.command.stdout+"</font>\n"; }) } if(Object.values(res.msg.skipped).length !=0){ var data_skipped=res.msg.skipped; $.each(data_skipped,function (k,v) { msg=msg+"<font color=cyan>"+ k + "| SKIPPED | rc=0 >>\n"; msg=msg+v.command.stdout+"</font>\n"; }) } if(Object.values(res.msg.failed).length !=0){ var data_failed=res.msg.failed; $.each(data_failed,function (k,v) { msg=msg+"<font color=red>"+ k + "| FAILED | rc=2 >>\n"; msg=msg+v.command.stdout+"\n"; msg=msg+v.command.stderr+"</font>\n"; }) } if(Object.values(res.msg.unreachable).length !=0){ var data_unreachable=res.msg.unreachable; $.each(data_unreachable,function (k,v) { msg=msg+"<font color=red>"+ k + "| UNREACHABLE! >>\n"; msg=msg+v.command.msg+"</font>\n"; }) } $("#com_span").html(msg); } }) }) </script>