Ho il seguente script che funziona, ma ha un problema fastidioso:Google messaggio grafico carico
<html>
<head>
<script language="javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChartAjax);
function drawChartAjax() {
$.ajax({
url: 'chart_json.aspx',
type: 'POST',
dataType: 'json',
success: function(data) {
drawChart(data);
}
});
}
function drawChart(json) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'User');
data.addColumn('number', 'v');
data.addRows(json.length);
for(var j in json) {
for(var k in json[j]) {
data.setValue(parseInt(j), 0, k);
data.setValue(parseInt(j), 1, json[j][k].v);
}
}
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, {width: 500, height: 300, is3D: true, title: 'Titles goes here'});
}
</script>
</head>
<body>
<div id="header">header goes ehre</div>
<div id="chart_div"></div>
<div id="footer">footer goes here</div>
</body>
</html>
Il problema è che a volte il grafico può richiedere molto tempo a comparire per vari motivi. Quando ciò accade, l'intestazione viene caricata, seguita dal grafico, seguita dal piè di pagina. Questo sembra terribile IMO. IMO, l'intera pagina dovrebbe essere caricata, incluso il piè di pagina, e un messaggio di "caricamento .." piatto dovrebbe essere visualizzato fino a quando il grafico non è pronto per essere visualizzato, o una gif animata finché il grafico non è pronto.
Come posso caricare tutta la pagina e visualizzare un messaggio di caricamento finché il grafico non è pronto, invece di mancare il piè di pagina, quindi il piè di pagina viene visualizzato all'improvviso al termine del caricamento del grafico?
Non vorrei discutere se fosse l'anno 2003, ma è un po 'troppo vecchia scuola. Non puoi supporre che DOM sia pronto anche quando lo script è alla fine del file. bozdoz ha dato la risposta corretta. Usa $ (funzione) causa l'esecuzione del codice all'interno dopo che DOM è pronto. – naugtur
Grazie per il riconoscimento naugtur! :) – bozdoz