传递信息的方法,除了添加隐藏属性的信息之外,还可以添加自定义属性。可以在{% for %}循环中这样定义: <td clsid=" {{row.clsid}} "> {{row.title}}</td> 这样就传递了一个自定义属性:clsid,可以以此来标识这条记录。 <a class="btn-edit">对话框编辑班级信息</a> <script> $('.btn-edit').click(function()){ $(#shadow,#editModal).removeClass('hide'); //获取当前标签,并且找到父标签。a标签只定义了一个class,这时$(this)就是当前标签 var tds = $(this).parent().prevAll(); var studentId = $(tds[2]).text();//从当前标签向前数,从0开始,是第2个td的信息,所以是tds[2] var studentName = $(tds[1]).text(); var classId = $(tds[0]).attr('clsid');//本次获取标签的clsid属性的值,不是获取文本 $(#editId).val(studentId); $(#editName).val(studentName); $(#editClassId).val(classId); } $('#btnEdit').click(function(){ //更新学生信息,点击后需要发送Ajax请求。先拿到值 $.ajax({ url:'/modal_edit_student/', //注意这里需要在URL中定义的地址 type:'POST', data:{'nid':$('#edtiId').val(),'name':$('#edtiName').val(),'class_id':$('#edtiClassId').val()} dataType:'JSON', //这样就不用JSON.parse(arg) success:function(arg){ //这里省略JSON.parse(arg),因为有dataType定义 if(arg.status){ location.reload() }else{ $('#editError').text=arg.message; } } }) }) </script> 然后,编辑框可以这样设置: <div id="editModal" class="add-modal hide"> <h3>编辑学生信息</h3> 姓名:<input id="editName" type="text" name="name" placeholder="姓名" /> <input type="text" id="editId" style="display:none" />备注:注意这里是把editId隐藏保存在这里 ...... 班级: <select id="editClassId" name="classId"> {% for row in class_list %} <input id="btnEdit" type="button" value="更新" /> <span id="editError" style="color:red;"></span> 最终实现modal_edit_student函数,这个函数对应Ajax定义中对应的URL地址。 def modal_edit_student(): ret = {'status':True,'message':None} try: nid = request.POST.get('nid') class_id = request.POST.get('class_id') name = request.POST.get('name') sqlhelper.modify("update student set name=%s,class_id=%s where id=%s",[name,class_id,nid,]) except Exception as e: ret['status']=False ret['message']=str(e) return HttpResponse(json.dumps(ret))
浙公网安备 33010602011771号