Hi, I am unable to display the loading image during ajax calls, Below is my code. I am using kendo tab strip, generating dynamic html table and appending it to first div 'chart'.
<center><img id="loader" style="vertical-align: middle;height:70px;width:70px;" src="../../Content/Images/spinner.gif" /></center><div id="tabStrip"><ul><li class="k-state-active"> Table</li><li> Chart</li></ul><div id="daily_div" style="overflow: auto;"><table id="daily_table"></table></div><div id="chart"><h2>Chart representation for @Request.QueryString["node"]</h2></div></div><script type="text/javascript">$("#tabStrip").kendoTabStrip({ animation: { open: { effects: "fadeIn" } } });$(document).ajaxStart(function () {$("#loader").show(); });$(document).ajaxComplete(function () {$("#loader").hide(); });$(function () { // get nodequery variable var node= getQueryVariable("node"); var qry_month = getQueryVariable("month"); var enb_array = node.split(','); var d = new Date(); var month = d.getMonth(); var main_dates = []; // if month in qry variable is equal to this month, for loop for todays date -1 if (qry_month == (month + 1)) { // get todays date var dt = d.getDate(); if ((month + 1) < 10) { month = "0" + (month + 1); } else { month = month + 1; } // add heading row... var heading_row = "<thead><tr><th></th><th></th>"; for (var i = 1; i <= (dt - 1); i++) { var j; if (i < 10) { j = "0" + i; } else { j = i; } var data_heading = d.getFullYear() + "/" + month + "/" + j; main_dates.push(data_heading); heading_row += "<th style='width:500px;' id='" + data_heading + "'><b>" + data_heading + "</b></th>"; } heading_row += "</tr></thead>";$('#daily_table').append(heading_row); //$('#loader').show(); load_table(heading_row,enb_array, month, main_dates); // if commented heading is being populated and loading gif is showing.... } // else if month > this month display null else { alert("No data to display!"); } // load high chart too... }); function load_table(heading_row, enb_array, month, main_dates) { var data_row = "" + heading_row; for (var enb = 0; enb < enb_array.length; enb++) { var enodeb = enb_array[enb]; var url = decodeURIComponent("/Home/GetDates?enodeb=" + enodeb + "&month=" + month); url = url.replace(' ', ''); //console.log(url); //$('#loader').show();$.ajax({ type: "GET", url: url, async: false, dataType: "json", contentType: "application/json;charset=utf-8", success: function (response) { //$('#loader').hide(); console.log(JSON.stringify(response)); // comment later // alert(response.length); for (var i = 0; i < response.length; i++) { var obj = response[i]; //..... generate data_rows for table // end of for key obj } // end of for response.length // find heading and compare with DateUTC, if equal insert data else insert'null' and skip data_row += "<tr><td><a target='_blank' href='GenerateChart?node=" + node + "'><b>" + node + "</b></b></td></tr>"; //console.log(data_row); for (var met = 0; met < metrics.length; met++) { // ...generate data row for (var i = 0; i < main_dates.length; i++) { var pos = $.inArray(main_dates[i], DateUTC_array); if (pos != -1) { // insert values switch (metrics[met]) { } } else { // insert '-' data_row += "<td><b> - </b></td>" } } // end of main_dates for data_row += "</tr>"; } }, // end of success complete: function () { document.getElementById("daily_table").innerHTML = data_row; //$('#loader').hide(); } }); //end of ajax call } //end of for enb length //data_row += "</table>"; //$('#daily_table').append(data_row); console.log(data_row); }
The multiple ajax calls is taking time, so I want to display a loading gif while the page loads completely...
Any help appreciated!!Thanks!!