項目中用戶上傳病例數據,每一次上傳自動生成一個病例文件夾,數據保存到後臺,前端顯示文件夾,如今的需求是勾選想要刪除的文件夾的chenckbox,點擊刪除後,數據庫和前端都相應的更新。前端
若是是靜態頁面,直接根據id或者class定位到checkbox,而後判斷狀態,直接remove便可.可是動態頁面,須要與後臺交互同步,前端相應的文件夾刪除,後臺數據庫也要刪除文件夾內的數據,每個病例文件夾對應數據庫的一個recordId,那麼問題是,如何知道當前checkbox選中的文件夾對應的病例id(文件夾是動態生成的,若是文件夾數量是固定得,直接按照靜態頁面的方法獲取就好了),項目中用到的是flask框架,見下圖:ajax
1 <ul class="divall"> 2 {%for record in records%} 3 {%if current_user==user%} 4 <li class="pat_li"> 5 <input type="text" class="pat" value="{{record.title}}" onfocus="rename(this)" onblur="blur_supervise(this)" readonly/> 6 <button class="btn_name_ok glyphicon glyphicon-ok" onclick="ok_name()"></button> 7 <button class="btn_name_remove glyphicon glyphicon-remove" onclick="remove_name(this)"></button> 8 <ul class="pat_assist"> 9 <li ><input type="button" class="btn_img_icon" > <img id={{record.id}} src={{ url_for('static', filename='images/Dia_mng/delete_icon.png') }} onclick=del_record(this)></input></li> 10 <li ><a href="{{url_for('main.history_list',type=dia_type,record_id=record.id)}}"><button class="btn_img_icon"><img src={{ url_for('static', filename='images/Dia_mng/icon_hiy.png') }}></button></a></li> 11 <li > <a href="{{ url_for('main.record_diagnosis',record_id=record.id,record_type=dia_type) }}"><button class="btn_img_icon"><img src={{ url_for('static', filename='images/Dia_mng/icon_dia.png') }}></button></a></li> 12 </ul> 13 <input type="checkbox" class="chkFolder"> 14 <a href="{{ url_for('main.record_diagnosis',record_id=record.id,record_type=dia_type) }}"></a > 15 </li> 16 {% endif %} 17 {% endfor %} 18 </ul>
如圖所示代碼,第2行3行是flask的循環語句,意思是根據數據庫的病例id的length來循環生成<li>標籤.....li標籤包裹的是一個文件夾的模板,那麼如何肯定第13行當前勾選的checkbox,所對應的病例id,從而進行刪除後臺數據庫?解決辦法是修改代碼:數據庫
<input type="checkbox" class="chkFolder" id={{record.id}}>
將record in records 的每一項的record id賦值給input的id屬性,而後遍歷全部checkbox選取爲true的元素,獲取到id屬性,放入數組中,也就是病例id的數組,而後經過ajax傳給後臺 刷新頁面:json
1 var channel=[];
//divall內全部type爲checkbox的且選中的元素 2 var a=$('.divall input[type=checkbox]:checked').each(function() 3 {//獲取id加入數組 4 if ($.inArray(jQuery(this).attr("id"), channel)==-1) { 5 channel.push(jQuery(this).attr("id")); 6 } 7 });
checkbox的屬性爲true或者false,可是經過jQure得到的true的值爲checked。得到了id而後經過ajax傳遞給後臺。flask
var record_check = { "records_id":channel, "dia_type":"{{ dia_type }}", } $.ajax({ type : "post", url : "/delete_records", data : JSON.stringify(record_check), dataType : 'json', contentType : "application/json; charset=utf-8", success : function(data) { console.log(data.flag); if(data.flag==1) window.location.reload(); else { alert("未成功刪除,請選擇刪除病例"); } } });