$("#monitor_data_way").change(function(){
        if($("#monitor_data_way").val()=="realtime"){
            var tmp=page_lock();
            if(tmp==true){
            monitor_url="realtime?sum_nic_role=False&sum_nic_node=False&sum_lun_fs=True";
            var myChart=[];
            myChart=render_chart(myChart,monitor_url);
            interval_id = setInterval(function(){handle_timer_event(myChart,monitor_url)},1000);
            $("#day_lun_history").prop("hidden",true);
            $("#monitor-render-control").show();
            page_unlock();
            }
        }else{
            clearInterval(interval_id);
            get_history_data();
            $("#day_lun_history").prop("hidden",false);
            $("#monitor-render-control").hide();
        }
    })
我的page_lock()函数功能就是show一个图层,并返回了一个true,问下点击事件触发时,为什么page_lock没生效,貌似是执行顺序不对?page_lock会等下面的函数中ajax(同步、异步都有)接收数据完毕才会执行。我该怎么做,ajax用的太多了,不方便改动,怎么能简便处理来使page_lock()生效。

解决方案 »

  1.   

    如果page_lock()函数中有异步ajax就不能用return返回true,应该改用回调函数的形式返回数据。
      

  2.   

    类似这样function page_lock(foo) {
    $.ajax({
    url: ".........",
    type: "POST",
    success: function (data) {
    .........
    foo(true);
    }
    });
    }    $("#monitor_data_way").change(function(){
            if($("#monitor_data_way").val()=="realtime"){
                page_lock(function(tmp) {
                if(tmp==true){
                monitor_url="realtime?sum_nic_role=False&sum_nic_node=False&sum_lun_fs=True";
                var myChart=[];
                myChart=render_chart(myChart,monitor_url);
                interval_id = setInterval(function(){handle_timer_event(myChart,monitor_url)},1000);
                $("#day_lun_history").prop("hidden",true);
                $("#monitor-render-control").show();
                page_unlock();
                }
                });
            }else{
                clearInterval(interval_id);
                get_history_data();
                $("#day_lun_history").prop("hidden",false);
                $("#monitor-render-control").hide();
            }
        })
      

  3.   

    page_lock()这个函数没调用任何ajax,就是个图层show()。
        page_lock(){
            $("#background,.loading",parent.document).show();
            return true;
        }