loading data dynamically and asynchronously on ajax call

.py

def getParentMenuList(request):
    try:
        cursor = connection.cursor()
        resultList=[]
        cursor.execute("SELECT id,func_name FROM '表名稱' WHERE parent_id IS NULL")
        result = cursor.fetchall()
        for row in result:
            resultList.append(str(row[0])+","+str(row[1]))
        return JsonResponse({'parent_menu': resultList})
    except:
        pass


def get_child_menu_dynamically(request):

    parent_id = request.GET.get("parent_id")

    try:
        cursor = connection.cursor()
        resultList = []
        cursor.execute(
            "SELECT id,func_name FROM '表名稱' WHERE secondary_menu_id=0 and parent_id=%s" % str(
                parent_id))
        result = cursor.fetchall()

        for row in result:
            resultList.append(str(row[0]) + "," + str(row[1]) )
        return JsonResponse({'child_menu': resultList})
    except:
        pass

.html

<div class="portlet-body form">
                                                <!-- BEGIN FORM-->
 <form  class="form-horizontal" id="function-form" method="post">
        {% csrf_token %}
       <div class="form-body">
               <div class="form-group">
                        <label class="col-md-3 control-label">一級(jí)菜單</label>
                                <div class="col-md-4">
                                         <select name="sel_class" id="sel_class"  style="border: 1px solid cornflowerblue; width: 335px; height: 30px;" onchange="myfunc()">
    <option id="selected_option" value="{{ sel_class }}">{{ sel_class }}</option>
                                                                </select>
                                                            </div>
                                                        </div>

       <div class="form-group">
                  <label class="col-md-3 control-label">二級(jí)菜單</label>
                             <div class="col-md-4">
                                      <select name="sel_class1" id="sel_class1"  style="border: 1px solid cornflowerblue; width: 335px; height: 30px"></select></div>
            <span class="hidden" id="s1" style="color: red;">二級(jí)菜單加載中...</span</div>


     <div class="form-group">
                 <label class="col-md-3 control-label">功能編碼</label>
                             <div class="col-md-4">
                                       <input type="text" class="form-control input-circle" placeholder="請(qǐng)輸入新的url或置空" name="func_code" id = "func_code"></div> </div>
        <div class="form-group">
               <label class="col-md-3 control-label">功能名稱</label>
                         <div class="col-md-4">
                                <input type="text" class="form-control input-circle" placeholder="請(qǐng)輸入唯一的功能名稱" name="func_name" id="func_name"> </div></div> </div>
         <div class="">
                  <div class="row">
                           <div class="col-md-offset-3 col-md-9 ">
                              <button type="submit" class="btn btn-circle green" >提交</button</div></div></div>

               </form>
                  <!-- END FORM-->

                           </div>

.js

$('#function-form').submit(function(){
                        $.ajax({
                            type:"post",
                            url: "/auth/authmanager/thirdmenu/submit/",
                            cache: false,
                            data:$('#function-form').serialize(),
                            success: function(result){

                                if (result.code === 1){
                                    alert('操作成功筑舅!');
                                }
                                else if (result.code === 2){
                                    alert('功能名稱不能為空!')
                                }
                                else if(result.code === 3){
                                    alert('該功能名稱已存在,不能重復(fù),請(qǐng)重新輸入!')
                                }
                                else if (result.code === 4){
                                    alert('此非空url已存在棍辕,不能重復(fù)暮现,請(qǐng)重新輸入!')
                                }
                                else if (result.code === 6){
                                    alert('一級(jí)菜單或二級(jí)菜單不能為空楚昭!')
                                }

                                else{
                                    alert('操作失敗')
                                }
                            },
                            error: function(){
                                 alert("操作失敗,請(qǐng)聯(lián)系管理員");
                             }

                        });
                        return false
                });


$(document).ready(function(){
                    get_parent_menu();

            });

            function get_parent_menu(){   //到頁(yè)面后 通過ajax 異步動(dòng)態(tài)生成該父類菜單栖袋。
                $.ajax({
                    type: "get",
                    url: '/index/get_parent_func',
                    async: true,
                    success: function (data) {
                        data.parent_menu.forEach(function(val,index) {
                            the_val = data.parent_menu[index].split(',')[0];
                            the_text = data.parent_menu[index].split(',')[1];
                            $("#sel_class").append("<option value='"+the_val+"' >"+the_text+"</option>")
                        })
                    }
                })
            }

            function myfunc(param) {  //根據(jù)父標(biāo)簽的onchange事件,調(diào)用該函數(shù)抚太,發(fā)送ajax請(qǐng)求塘幅,取出相應(yīng)的子菜單數(shù)據(jù)。
                var options=$("#sel_class option:selected").val();
                $.ajax({
                    type: "get",
                    url: '/index/get_child_menu_dynamically?parent_id='+options,
                    async: true,
                    cache:true,
                    beforeSend:function(){
                      var content = $('#s1');
                      var menu1_content = $('#sel_class option:selected');
                        content.removeClass('hidden');
                        if (menu1_content.val() === ''){
                            content.addClass('hidden')
                        }
                    },
                    success:function (data) {
                        //console.log(data.child_menu)
                        var data_children = data.child_menu;
                        $('#sel_class1').empty();
                        data.child_menu.forEach(function (val,index) {
                            the_name = data.child_menu[index].split(',')[1];
                            the_val = data.child_menu[index].split(',')[0];
                             $("#sel_class1").append("<option value='"+the_val+"'>" + the_name + "</option>");
                        });

                    },
                    complete:function () {
                        var content = $('#s1');
                        content.addClass('hidden')
                    }

                })
            }

異步加載數(shù)據(jù)凭舶,動(dòng)態(tài)追加元素到頁(yè)面晌块,動(dòng)態(tài)生成html標(biāo)簽中的內(nèi)容。
好處:
It just makes the query incrementally rather than pulling the entire data set all at once.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帅霜,一起剝皮案震驚了整個(gè)濱河市匆背,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌身冀,老刑警劉巖钝尸,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搂根,居然都是意外死亡珍促,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門剩愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猪叙,“玉大人,你說我怎么就攤上這事仁卷⊙妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锦积,是天一觀的道長(zhǎng)芒帕。 經(jīng)常有香客問我,道長(zhǎng)丰介,這世上最難降的妖魔是什么背蟆? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮哮幢,結(jié)果婚禮上带膀,老公的妹妹穿的比我還像新娘。我一直安慰自己橙垢,他們只是感情好本砰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钢悲,像睡著了一般点额。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莺琳,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天还棱,我揣著相機(jī)與錄音,去河邊找鬼惭等。 笑死珍手,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辞做。 我是一名探鬼主播琳要,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秤茅!你這毒婦竟也來了稚补?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤框喳,失蹤者是張志新(化名)和其女友劉穎课幕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體五垮,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乍惊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了放仗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片润绎。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诞挨,靈堂內(nèi)的尸體忽然破棺而出莉撇,到底是詐尸還是另有隱情,我是刑警寧澤亭姥,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布稼钩,位于F島的核電站,受9級(jí)特大地震影響达罗,放射性物質(zhì)發(fā)生泄漏坝撑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一粮揉、第九天 我趴在偏房一處隱蔽的房頂上張望巡李。 院中可真熱鬧,春花似錦扶认、人聲如沸侨拦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狱从。三九已至膨蛮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間季研,已是汗流浹背敞葛。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留与涡,地道東北人惹谐。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驼卖,于是被迫代替她去往敵國(guó)和親氨肌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容