下面是我的代码
但是实际上在等待过程中没有出现等待的过程。而是在alert("发送成功!")出现后,页面才出现等待页面,这是为什么?

解决方案 »

  1.   

    i=0,下面是j=0,     0怎么会小于0,所以for循环就没走
      

  2.   

    你好,请你了解一下回调函数的概念,会对你很有帮助~几乎所有的jquery函数都有一个回调函数的参数,使用它!!!比如,alert("haha");会在append完div后执行:
    $("#dialog").append("<div></div>",function(){
        alert("haha");
    });
      

  3.   

    append()不自带回调函数但是如果我在append()方法后面加个alert()后又可以显示遮盖啊,还有这个问题该怎么解决啊
      

  4.   

    发送ajax前显示loading,在ajax的success或complete回调函数里面,去掉loading
      

  5.   

    首先,你用for循环模拟等待就是一个完全错误的思路,简单的逻辑就算1000000对于JS来说也只是几毫秒的事。其实,alert会阻塞JS里其他方法的执行,在你点击确定之前,所有JS将停止运行最后说一下你这代码要怎么改如果是form提交,无解。但是看起来好像不是,所以结构应该调整一下var appended = $('<div>正在发送请求</div>').appendTo($('#dialog'));//先执行append
    $.ajax({//ajax发送请求
        url : 'aaa',
        dataType : 'json',
        success : function(data){
              appended.remove();//在ajax请求的success方法里把上面append了的东西给remove掉。
              //...其他逻辑
        }
    })
      

  6.   

    你这里用过setTimeout么?我没懂你说的产生事件等待是什么意思
      

  7.   

    这是我原来的代码,遮盖效果是在ajax自己执行完之后再显示的。而不是在我点击发送之后就显示的
      

  8.   

    这是我原来的代码,遮盖效果是在ajax自己执行完之后再显示的。而不是在我点击发送之后就显示的
      

  9.   

    这是我原来的代码,遮盖效果是在ajax自己执行完之后再显示的。而不是在我点击发送之后就显示的.没有等待效果是在ajax执行后再显示这样的需求,你这样的需求我也只能说前无古人后无来者,那你能说说你ajax请求过程中有什么样的体现吗,任何反应都没有?等ajax回来之后再显示发送中?还是你不明白ajax的异步原理?
      

  10.   


    你这个代码没问题,还是那句话,alert的时候不点击确定下面的代码是没办法执行的。你这个代码如果进了if里面,那也是先alert,你不点确定遮罩层一直在。点了确定之后遮罩层才会消失。当然,如果压根就没有alert,那只能说明你的请求出错了,或者res返回的数据有问题。
      

  11.   

    我理解错你的意思了。你的代码是没问题的,你说会在ajax回来之后才显示遮罩,感觉不太可能。是不是ajax返回的太快,所以让你有这样的错觉?你看看alert的时候先别点确定,看看遮罩层是不是在就知道了。append页面dom界面一般是不需要加什么回调不回调的,所以你的代码没什么问题。
      

  12.   

    这是我原来的代码,遮盖效果是在ajax自己执行完之后再显示的。而不是在我点击发送之后就显示的.没有等待效果是在ajax执行后再显示这样的需求,你这样的需求我也只能说前无古人后无来者,那你能说说你ajax请求过程中有什么样的体现吗,任何反应都没有?等ajax回来之后再显示发送中?还是你不明白ajax的异步原理?我的意思是:我点击“发送”,然后进入了我刚刚贴的代码里面。首先执行了append(),出现等待效果,然后程序继续执行ajax,这个过程中页面上是有等待效果的,当Ajax执行完后,提示发送成功,在调用remove()消除等待效果(这是我想要的效果)。但是实际上不是这样执行的。实际效果是我点击发送后,等待效果没出现,而是当Ajax执行完后,出现alert("发送成功")时才显示了等待效果
      

  13.   

    感觉上面说的在理,先遮盖,ajax成功后再去掉
      

  14.   

    去掉写到success里
    或者你这样测试,在ajax请求的后台方法里写一个比较耗时的操作,看看情况
      

  15.   


    你这个代码没问题,还是那句话,alert的时候不点击确定下面的代码是没办法执行的。你这个代码如果进了if里面,那也是先alert,你不点确定遮罩层一直在。点了确定之后遮罩层才会消失。当然,如果压根就没有alert,那只能说明你的请求出错了,或者res返回的数据有问题。ajax后台有好10左右秒的时间呢,我点击”发送“后,dialog没反应,应该是在执行后台的处理,过了几秒后,alert("发送成功")和遮盖效果同时显示,然后我点击alert的确定,遮盖效果就消失了,但这不是我想要的效果,无语了。
      

  16.   

    你先别发请求,用setTimeout来模拟异步
    $('#dialog').append('....');
    setTimeout(function(){
        alert('成功');
        $('#dialog>div[name=hide]').remove()
    },3000)这样试试看是什么样的效果。难道是你的ajax被改成同步了?就算是这样,也应该先显示遮罩,再锁死浏览器。你传的那2个false我也不知道是干嘛用的。
      

  17.   

    这个效果是好的,难道是我的ajax问题?
      

  18.   

    看看你传的2个false是什么意思吧。实在不行的话就把发请求的代码放到setTimeout里面去,加个几毫秒的延迟
    //append
    //var data 
    setTimeout(function(){
        AjaxRequest(...)
    },10)
    //function sendinfo()
      

  19.   

    好吧,append的确没有,click也没有对吧 ,你就不能用bind?我觉得解决这种问题最好的方法就是回调了,我只是给一种思路而已
      

  20.   

    使用一个setTimeout或者AJAX等待success之后关掉模态