//页面的button点击事件
function Search() {
    showWaitDialog(); //调用等待框,期望立即弹出,但是直到Search方法结束后才弹出。
    var TableBody;
    txtBrancheCD = document.getElementById("txtBrancheCD").value;
    txtCategoriesCD = document.getElementById("txtCategoriesCD").value;
    txtDate = document.getElementById("txtDate").value;    TableBody = wfrmActualDataOut.GetActualData(txtBrancheCD, txtCategoriesCD, txtDate).value;//调用ajax 数据库读取出ds
    if (TableBody != null && TableBody.Tables != undefined) {
       SetBody(TableBody);      //页面的table动态插入
    }
}
//这是页面写个隐藏div的方法,等待框显示。
function showWaitDialog() {
    var h = $(document).height();
    $(".overlay").css({ "height": h });
    $(".showbox").css({ 'display': 'block' });
    $(".overlay").css({ 'display': 'block', 'opacity': '0.8' });
    $(".showbox").css({ 'margin-top': '300px', 'opacity': '1' });
    document.body.onselectstart = function() { return false; }
    document.body.oncontextmenu = function() { return false; }
    Search();
}function closeWaitDialog() {    $(".showbox").css({ 'margin-top': '300px', 'opacity': '0' });
    $(".overlay").css({ 'display': 'none', 'opacity': '0' });
    $(".showbox").css({ 'display': 'none' });
}

解决方案 »

  1.   


    如果没有调用ajax和table动态插入的两个方法,等待框就可以立即弹出。
      

  2.   

    加async: false设成同步试试
      

  3.   

    showWaitDialog在ajax的before事件里面写,关闭等待层在回调函数里面的写
      

  4.   

    请问结合我的代码的话大体应该怎么改啊?你这句话我没弄明白,谢谢!
    你调用ajax应该是在wfrmActualDataOut.GetActualData(txtBrancheCD, txtCategoriesCD, txtDate)这里面的吧,里面的代码都没贴出来
      

  5.   

    找到对应的ajax请求模块:
    $.ajax({
    type: "POST",
    async: false,
    url: "ajaxReturn.txt",//请求地址
    beforeSend: beforeSendHandler,//请求前执行的函数(在这里弹出提示框)
    success: successHandler,//请求成功回调函数(在这里关闭提示框)
    error: errorHandler//请求失败回调函数(在这里关闭提示框,弹出错误提示)
    });