Ajax实现添加学生的方法,在Django中结合Ajax实现。 <a id="addModal">对话框的方式添加</a> 然后在<script>中添加响应函数。在同一个html中,写在script,于是下面的函数在页面加载时自动执行。 $(function(){ $(#addModal).click(function(){ alert(123) $('#shadow,#addModal').removeClass('hide');//注意一次性找到多个id的方法,移除隐藏class的写法 } } ) 同样,函数如果返回false,同样能够阻止href中的默认跳转事件发生。 <a href="http://www.baidu.com/" id="addModal">添加</a> 如果在上面的响应函数最后添加return false,那么不会跳转到百度。 这样的方式依赖jQuery,需要先导入:<script src="/static/jquery-1.12.4.js"></script> Ajax实现响应的方法: 首先在HTML中添加div层。 <style> //默认隐藏 .hide{ display:none; } //定义遮罩层 .shadow{ position:fixed;//相对于窗口来说,固定位置。 left:0; right:0; bottom:0; top:0; background-color:black;//设置颜色实现遮挡效果 opacity:0.4;//设置透明度,实现灰度的效果,不至于一片黑色什么都看不见 z-index:999;//设置图层的上下层关系 } //定义对话框层 .add-modal{ z-index:1000;比刚才设置的遮罩层的999大就行 position:fixed; left:50%; top:50%;//这样right & bottom就不用写了,已经设定明确好位置 //不设置opacity,没有透明度 width:400px; height:300px; background-color:white;//这样就可以直接显示出来 margin-left:-200px;//往左边稍微移动 margin-top:-200px;//向上稍微移动 } </style> <div class="shadow hide" id="shadow"> //这是遮罩层 </div> <div class="add-modal hide" id="addModal"> <p> <input id="addName" type="text" name="name" placeholder="姓名"/>//placeholder属性会在输入框中灰色显示缺省值,但IE低版本不支持 </p> <p> <select name="classID" id="addClassId">//为方便js取值,设置id值 {% for row in class-list %} <option value="{{ row.id }}">{{ row.title }}</option> {% endfor %} </select> </p> </div>//这是对话框层 增加添加按钮,注意Ajax响应不再form中,type不能是submit类型。 <input id="btnAdd" type="button" value="添加学生" /> //增加一个span,用于显示成功或失败信息 <span id="addError" style="color:red;"></span> 然后在script中添加响应函数 $(function(){ $('#btnAdd').click(function(){ $.ajax({ url:'/modal_add_student/', type:'POST', data:{'name':$('#addName').val(),'class_id':$('#addClassId').val(), sucess:function(arg){ console.log(arg); arg = JSON.parse(arg);//convert the arg to object if(arg.status){ location.reload(); }else{ $(#addError).text(arg.message); } } }) }) }) 在url.py中添加网址的对应函数关系: path(r'^modal_add_student/',views.modal_add_student), 在view.py中添加处理函数: def modal_add_student(request): //首先定义返回值 ret = {'status':True,'message':None} try: name = request.POST.get('name')//注意ajax中的数据也是使用post的方式获取的 class_id = request.POST.get('class_id') sqlheper.modify('insert into student(name,class_id) values(%s,%s)',[name,class_id,] except Exception as e: ret['status']=False ret['message']=str(e) return HttpResponse(json.dumps(ret))
浙公网安备 33010602011771号