Ciao a tutti, ho un problema con una semplice chiamata AJAX; ho provato a cercare nel forum ma non ho trovato nulla che facesse al caso mio oppure non ho cercato bene.
Vi spiego il problema:
ho una semplice pagina html, costituita da due div, il primo contenente l'intestazione della pagina, e il secondo che racchiude il contenuto.
Al primo caricamento della pagina, il secondo div è completamente vuoto, ma viene riempito non appena l'utente clicca uno dei link nella barra di navigazione, eseguendo quindi lo script js che richiama lo script php.
Il problema è che lo script php genera una tabella composta da svariate righe (sono 26 colonne per poco più di 50'000 righe) che deve essere stampata interamente in unica pagina e avevo pensato che richiamando questo script tramite ajax non avrei rallentato l'intero browser, inserend,o nel div dove andrà in stampa la tabella, una gif animata per far capire all'utente il caricamento in corso.
Nonostante tutto mi sono scontrato con un gran rallentamento del browser, a causa di questo, la gif non viene mostrata e tutto (il browser) rimane inutilizzabile fino a quando il caricamento della tabella non viene ultimato.
Questa è lo script js che ho utilizzato per richiamare la tabella da php:
codice:
var loading="<span id=\"stat-text\">Caricamento in corso</span><span id=\"stat-img\"><img src=\"img/ajax-loader.gif\" /></span>";
var load_comp="<span id=\"stat-text\">Caricamento completato</span><span id=\"stat-img\"><img src=\"img/ajax-loader-ok.png\" width=\"28\" height=\"28\" /></span>";
var xmlhttp;
function startFunc(){
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function anag_goto(page){
var url = "anag.php"+ "?anag="+page+"&random="+Math.random();
xmlhttp.open("GET","../"+url,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==3){
document.getElementById("status").innerHTML=loading;
}else{
document.getElementById("status").innerHTML="";
}
if (xmlhttp.readyState==4 && xmlhttp.status==200){
result=xmlhttp.responseText;
document.getElementById("container").innerHTML="";
document.getElementById("container").innerHTML=result;
document.getElementById("status").innerHTML=load_comp;
}
}
xmlhttp.send();
}
Qualcuno saprebbe spiegarmi come evitare il rallentamento, stampano quindi la gif, fino a che il server non restituisce la tabella per intero?