Javascript AJAX-是否有数据接收功能?

Javascript AJAX-是否有数据接收功能?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个从数据库加载大量数据并将其写入DOM的页面 根据记录的数量,从接收数据到将其打印到DOM可能需要30秒左右的时间 我很好奇,一旦数据开始从AJAX调用下载/接收,是否有一种检测方法 我问这个问题的原因是我在页面上有一个加载指示器(旋转gif),它显示正在发生的事情 我希望能够检测数据何时开始下载,并将其更改为另一条消息,类似于“第2步,共2步”,以便用户知道它正在进行 步骤1:在文档准备就绪时,显示加载程序:$(“#加载”).show() 步骤2:触发AJAX调用以获取数据 $.ajax

我有一个从数据库加载大量数据并将其写入DOM的页面

根据记录的数量,从接收数据到将其打印到DOM可能需要30秒左右的时间

我很好奇,一旦数据开始从AJAX调用下载/接收,是否有一种检测方法

我问这个问题的原因是我在页面上有一个加载指示器(旋转gif),它显示正在发生的事情

我希望能够检测数据何时开始下载,并将其更改为另一条消息,类似于“第2步,共2步”,以便用户知道它正在进行

步骤1:在文档准备就绪时,显示加载程序:
$(“#加载”).show()

步骤2:触发AJAX调用以获取数据

$.ajax({
    url: "api/fetchDashboard",
    type: 'POST',
    cache: false,
    data: {
        dashboardID: dashboardID
    },
    error: function(err) {
        alert(err.statusText);
    },
    success: function(data) {
      // Write data to the DOM here

     // Once done, hide loader
     $('#loading').hide(); 
    }
});
步骤3:将数据写入DOM并隐藏加载指示器

我的要求是,一旦我们开始接收数据,就检测到它,并将加载指示器更改为其他指示器,以表明我们已检索到数据,并准备查看它。

这是否可能在接收时检测并触发另一个功能?在上面的图像中,您可以看到它正在下载所有数据,并且认为一旦计数器启动,这将表明我们已经检索到了一些内容

更新:

每问一句,这就是我如何将所有行连接到循环之外的DOM追加

var output = '',

$.ajax({
    url: "api/fetchDashboardRender",
    type: 'POST',
    cache: false,
    data: {
        dashboardID: dashboardID
    },
    error: function(err) {
        alert(err.statusText);
    },
    success: function(data) {

        // Set our results as a variable
        dashResults = data // Holds the dashboard results

        // Loop over the core data
        $(dashResults['data']['results']['data']).each(function() {
          output += 'Table Row Data Here';
        });

        // Append the results to the DOM
        $('[name=results]').empty().append(output);
    }

});

这听起来像是一个很长的负载。我的第一个建议是最初使用CSS显示加载程序,而不是使用javascript来显示它。其次,我相信当ajax发送信息时,它是非常即时的。它只知道现在它在等待。然后它只会收到一个可以使用的包。我不认为ajax“下载”(有进度)是一个包。它只是同时到达那里?我可能错了。但是按照我的想法,在页面加载时只显示加载,在发送ajax调用时显示接收(就在ajax调用之前),在接收数据时显示数据。为什么不在发送调用时显示加载元素?可能是Hm的重复,我想我的目标是尝试让用户感觉事情正在发生。在这个长示例中,从表中加载所有数据(35000条记录)大约需要20秒,然后用X时间将数据写入DOM。我想显示正在进行的更改,例如(我们得到了您的数据,现在我们正在准备查看这些数据。是的,我知道一次加载这么多的数据不是一个最佳做法,但除此之外,我们只是检查中是否存在这种类型的函数。)AJAX@SBB你知道在你开始写DOM之前你有多少记录吗?这听起来像是一个很长的负载。我的first建议首先使用CSS显示加载程序,而不是使用javascript来显示。其次,我相信当ajax发送信息时,它是非常即时的。它只知道现在它正在等待。然后它只会收到一个准备好使用的包。我不认为ajax“下载”(有进展)一个包。它只是在同一时间到达那里?我可能错了。但是我认为,在页面加载时,您只需显示加载,在发送ajax调用时(就在您的ajax调用之前)显示“接收”在收到数据时显示数据。为什么不在发送呼叫时显示
#loading
元素?可能是Hm的副本,我想我的目标是尝试让用户感觉事情正在发生。在这个长示例中,从表中加载所有数据(35000条记录)大约需要20秒然后X时间将其写入DOM。我想显示正在进行的更改,例如(我们得到了您的数据,现在我们正在准备查看这些数据。是的,我知道一次加载这么多的数据不是一个最佳做法,但除此之外,我们只是检查中是否存在这种类型的函数。)AJAX@SBB在开始写入DOM之前,您知道有多少条记录吗?