AJAX - 是否有数据接收函数?

时间:2016-12-08 15:00:18

标签: javascript jquery ajax

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

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

我很好奇是否有一种方法可以检测一旦数据开始从AJAX通话中下载/接收?

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

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

第1步:在文档就绪时,显示加载程序:$('#loading').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并隐藏加载指标

我的问题是,一旦我们开始接收数据,检测到并将加载指示器更改为其他内容,以表明我们已检索到数据并准备查看数据。 enter image description here

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

更新

Per ask,这是我连接所有行连接后循环外的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);
    }

});

0 个答案:

没有答案