var isComplete = false;
        $(
            function () {
                $("#dialog-message").dialog({
                    resizable: false,
                    modal: true,
                    autoOpen: true
                });
                $("#dialog-message").html("<p>正在加载...</p>");
                setTimeout(function () {
                    $.ajax({
                        type: "POST",
                        url: "ajax/querylist.ashx",
                        datatype: "json",
                        success: function (msg) {
                            $("#dialog-message").html("<p>加载完成!</p>");
                            isComplete = true;
                            setTimeout(function () {
                                $("#dialog-message").dialog("close");
                            }, 500);
                            querystatus();
                        }
                    });
                }, 0);
         function querystatus() {
                $.ajax({
                    type: "POST",
                    url: "ajax/QueryStatus.ashx",
                    datatype: "text",
                    success: function (msg) {
                        $("#dialog-message").html("<p>" + msg + "</p>");
                    }
                });
                if (!isComplete) {
                    setTimeout(querystatus, 500);
                }
            }
            }
        );

解决方案 »

  1.   


    大哥,你没理解我的意思吧,你这样改的话,那就变成了获取处理数据完了再显示状态。
    因为处理数据需要好几秒,我就想在处理数据的时候,一边处理,一边显示当前处理到哪一步了
    所以这两个AJAX是同时执行,第二个是500毫秒请求一次状态(检测数据处理到哪一步)
      

  2.   

                function querystatus() {
                    $.ajax({
                        type: "POST",
                        url: "ajax/QueryStatus.ashx",
                        datatype: "text",
                        success: function (msg) {
                            $("#dialog-message").html("<p>" + msg + "</p>");
                    if (!isComplete) {
                        setTimeout(querystatus, 500);
                    }

                        }
                    });            }那就这样咧
    大哥,你没理解我的意思吧,你这样改的话,那就变成了获取处理数据完了再显示状态。
    因为处理数据需要好几秒,我就想在处理数据的时候,一边处理,一边显示当前处理到哪一步了
    所以这两个AJAX是同时执行,第二个是500毫秒请求一次状态(检测数据处理到哪一步)
      

  3.   

    这个可能是IIS把两个请求排序了吧,楼主可以尝试一下,当正在处理第一个请求的时候,能不能打开其他的页面
      

  4.   

    可以啊,我就想实现显示真实的处理进度,但请求进度的AJAX总是在列表返回之后才返回进度结果。
    继续求解
      

  5.   

    找到原因了,原来是后台文件中用了session
    session会将当前请求挂起,所以另一个一直不能返回结果http://msdn.microsoft.com/zh-cn/library/ms178581(v=vs.100).aspx