我有一个页面从数据库加载大量数据并将其写入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并隐藏加载指标
我的问题是,一旦我们开始接收数据,检测到并将加载指示器更改为其他内容,以表明我们已检索到数据并准备查看数据。
这是否可以在接收时检测并触发另一个功能?在上图中,您可以看到它正在下载所有数据,并且认为一旦该计数器启动,就会表明我们已经检索到了某些内容。
更新
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);
}
});