Ajax技术使用之ajax与模态框结合的妙用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Ajax技术使用之ajax与模态框结合的妙用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8960字,纯文字阅读大概需要13分钟。
内容图文
Ajax技术使用之ajax与模态框结合的妙用
要求:
使用ajax的方式提交数据:https://www.cnblogs.com/-wenli/p/10470063.html
使用模态框完成增加数据,能完成增加,删除与修改也就很简单了。
HTML代码
关于在django中引用静态文件:https://www.cnblogs.com/-wenli/p/10470063.html
关于使用的css样式:https://v3.bootcss.com/css/
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 {%load staticfiles%} 6 < link rel ="stylesheet" href ="{% static ‘/plugins/bootstrap-3.3.7-dist/css/bootstrap.css‘ %}" > 7 < link rel ="stylesheet" href ="{% static ‘/plugins/font-awesome-4.7.0/font-awesome-4.7.0/css/font-awesome.css‘ %}" > 8 < script src ="{% static ‘/js/jquery/jquery-3.3.1.js‘ %}" ></ script > 9 < title >Title</title> 10</head> 11<body> 12 13<div class="container"> 14<div> 15<a type="button" class="btn btn-primary" id="addBtn">添加</a> 16</div> 17<div> 18<table border="1" class="table table-bordered"> 19<thead> 20<tr> 21<th>ID</th> 22<th>姓名</th> 23<th>年龄</th> 24<th>性别</th> 25<th>班级</th> 26<th>住址</th> 27<th>行为</th> 28</tr> 29</thead> 30<tbody> 31 {% for row in stu_list %} 32<tr> 33<td> 34 {{ row.id }} 35</td> 36<td> 37 {{ row.username }} 38</td> 39<td> 40 {{ row.age }} 41</td> 42<td> 43 {{ row.gender }} 44</td> 45<td> 46 {{ row.cs.title }} 47</td> 48<td> 49 {{ row.address }} 50</td> 51<td> 52<a type="button" class="btn btn-primary" href="/delstudent.html?nid={{ row.id }}">删除</a> 53<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 54<a type="button" class="btn btn-primary" href="/altstudent.html?nid={{ row.id }}">编辑</a> 55<span class="fa fa-edit" aria-hidden="true"></span> 56 57</td> 58</tr> 59 {% endfor %} 60</tbody> 61</table> 62</div> 63</div> 64 65<!--<!– Button trigger modal –>--> 66<!--<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">--> 67<!--Launch demo modal--> 68<!--</button>--> 69<!--默认通过id相同来关联使用--> 70<!-- Modal --> 71<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 72<div class="modal-dialog" role="document"> 73<div class="modal-content"> 74<div class="modal-header"> 75<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span> 76</button> 77<h4 class="modal-title" id="myModalLabel">创建学生</h4> 78</div> 79 80<div class="modal-body"> 81 82<div class="form-group"> 83<label for="exampleInputEmail1">姓名:</label> 84<input type="text" class="form-control" id="exampleInputEmail1" name="username" placeholder="name"> 85</div> 86 87<div class="form-group"> 88<label for="exampleInput">年龄:</label> 89<input type="text" class="form-control" id="exampleInput" name="age" placeholder="age"> 90</div> 91 92<div class="form-group"> 93<label for="exampleInputEmail1">性别:</label> 94<label class="checkbox-inline"> 95<input type="radio" name="gender" value="1"> 男 96</label> 97<label class="checkbox-inline"> 98<input type="radio" name="gender" value="0"> 女 99</label>100<div>101102103<div class="form-group">104<select class="form-control" name="class">105 {% for row in obj %} 106<option value="{{ row.id }}">{{ row.title }}</option>107 {% endfor %} 108</select>109<div>110111<div class="form-group">112<label for="exampleInputEmail1">住址:</label>113<input type="text" class="form-control" id="exampleInputaddress" placeholder="address" name="address">114</div>115116</div>117<div class="modal-footer">118<span id="errMsg" style="color:red;"></span>119<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>120<button type="button" class="btn btn-primary" id="btnSave">确定</button>121</div>122123</div>124</div>125</div>126127<script src="{% static ‘/plugins/bootstrap-3.3.7-dist/js/bootstrap.js‘ %}"></script>128<script>129<!--#调用函数-->130<!--页面加载完后执行的函数 -->131 $(function(){ 132 bindEvent(); 133 bindSave(); 134 }); 135<!--#绑定函数-->136function bindEvent(){ 137 $(‘#addBtn‘).click(function(){ 138 $(‘#addModal‘).modal(‘show‘); 139<!--#通过js的方法调用模态对话框-->140 }) 141 } 142function bindSave(){ 143144 $(‘#btnSave‘).click(function(){ 145var postData={}; 146<!--#在id为addModal的标签下找input与select标签-->147 $(‘#addModal‘).find(‘input,select‘).each(function(){ 148 console.log(this); 149var v =$(this).val(); 150var n=$(this).attr(‘name‘); 151if(n==‘gender‘){ 152if($(this).prop(‘checked‘)){ 153 postData[n]=v; 154 } 155 } 156else{ 157 postData[n]=v; 158 } 159 }); 160 console.log(postData) 161162 $.ajax({ 163 url:"/addstudent.html/", 164 type:‘POST‘, 165 data:postData, 166 success:function(arg){ 167 console.log(arg); 168<!--JSON.parse()将字符串转换为字典-->169var dict=JSON.parse(arg); 170if(dict.status){ 171 window.location.reload(); 172 } 173else{ 174 $(‘#errMsg‘).text(dict.message); 175 } 176177 } 178 }) 179180 }) 181182 } 183184</script>185</body>186</html>
视图函数
1 from django.shortcuts import render,HttpResponse,redirect 2from app01 import models 3 4def get_student(request): 5 stu_list = models.Student.objects.all() 6 obj = models.Classes.objects.all() 7 8print(stu_list) 9print(obj) 10# return HttpResponse(‘ok‘)11return render(request, "get_student.html", {‘stu_list‘: stu_list,‘obj‘:obj}) 12def add_student(request): 13 response={‘status‘:True,‘message‘:None} 14try: 15 name = request.POST.get(‘username‘) 16 age = request.POST.get(‘age‘) 17 gender = request.POST.get(‘gender‘) 18 cs_id = request.POST.get(‘class‘) 19 address = request.POST.get(‘address‘) 20print(name, age, gender, cs_id, address) 21 models.Student.objects.create(username=name, age=age, gender=gender, cs_id=cs_id, address=address) 22except Exception as e: 23 response[‘status‘]=False 24 response[‘message‘]=‘用户输入错误‘25import json 26 result=json.dumps(response,ensure_ascii=False) 27return HttpResponse(result) 28# ret=models.Classes.objects.all().values(‘title‘)29# for Title in ret:30# if Title[‘title‘]==title:31# print(Title)3233# 注意这里是url路径343536373839def del_student(request): 40 nid = request.GET.get(‘nid‘) 41print(nid) 42 ret = models.Student.objects.filter(id=nid).delete() 43print(ret) 44return redirect(‘/student.html/‘) 45def alt_student(request): 46if request.method=="GET": 47 nid = request.GET.get(‘nid‘) 48 obj=models.Student.objects.filter(id=nid)[0] 49 cs_list = models.Classes.objects.all() 50return render(request,‘alt_student.html‘,locals()) 5152elif request.method=="POST": 53 nid=request.GET.get("nid") 54 name = request.POST.get(‘name‘) 55 age = request.POST.get(‘age‘) 56 gender = request.POST.get(‘gender‘) 57 cs_id = request.POST.get(‘class‘) 58 address = request.POST.get(‘address‘) 59print(name, age, gender, cs_id, address) 60# models.Student.objects.filter(id=nid).update(username=name,age=age,gender=gender,cs_id=cs_id,address=address)61return redirect("/student.html/")
路由
1 from django.contrib import admin 2from django.urls import path 3from app01.views import * 4 urlpatterns = [ 5 path(‘altclasses.html/‘,alt_classes), 6 path(‘student.html/‘, get_student), 7 path(‘addstudent.html/‘,add_student), 8 path(‘delstudent.html/‘,del_student), 9 ]
具体实现测试
代码分析:
使用ajax提交数据
url:提交地址
type:数据传输的方式,支持所有http方法
data:传输的数据为键值对格式
succes:function(arg){
//执行代码
}
这个函数只有服务端返回的信息到达客户端才会执行,这个很重要,比如添加完数据,在函数里自动刷新页面,如果数据格式错误,将服务端返回的信息,在这里就行处理,显示到页面上。
而arg为服务端返回的数据,为字符串
这里就要补充一下在python下,以及javascript下的序列化。
如果我们使用下面第一种方法,需要自行进行反序列化,JSON.parse()。
如果使用第二种方法:只需要加上dataType:‘JSON‘,ajax自动帮我们完成反序列化。
绑定模态框
找到 id="addModal"的div:为模态框 id="addBtn"的a标签:为添加按钮 我们需要为按钮绑定事件,点击按钮就会出现模态框
function bindEvent(){ $(‘#addBtn‘).click(function(){ $(‘#addModal‘).modal(‘show‘); <!--#通过js的方法调用模态对话框--> }) }
注意 : $( ‘ #addModal ‘).modal(‘show‘); 为js的方式打开模态框。
获取模态框里的数据,并发送
我们的思路是获取标签的name属性与标签里的值,构成字典发送过去,注意这里面会获取两次radio,去掉我们没有选择的radio,我们点击选择的radio会有属性。
1.绑定事件,确定的时候提交数据,触发事件
找到模态框与确定按钮的id
$(‘#btnSave‘).click(function(
2.创建空字典
var postData={}
3.
首先所有获取所有的input与select标签
$(‘#addModal‘).find(‘input,select‘).each(function(
4.
打印获取到的标签
将所有标签的值赋给v
将所有标签的name属性的值赋给n
console.log(this); var v =$(this).val(); var n=$(this).attr(‘name‘);
5.
如果n的属性里有gender则进行剔除,最后赋值,打印一遍符合要求的标签
if(n==‘gender‘){ if($(this).prop(‘checked‘)){ postData[n]=v; } } else{ postData[n]=v; } }); console.log(postData)
6.最后发送数据。
原文:https://www.cnblogs.com/-wenli/p/10474141.html
内容总结
以上是互联网集市为您收集整理的Ajax技术使用之ajax与模态框结合的妙用全部内容,希望文章能够帮你解决Ajax技术使用之ajax与模态框结合的妙用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。