ciao a tutti ragazzi,
ho una pagina che fa molte query e ci mette molto a caricare..
il problema e che ci mette troppo a caricare proprio quando vai a cliccare sul link che va ad aprirla...
con conseguenza che si sta 3-4 secondi sulla pagina con il link che ho cliccato ma che non fa nulla... e l'attesa è noisa... e sopratuttto può spingere l'utente a cliccare più volte sul link.
ho trovato questo script che potrebbe fare proprio al caso mio.. visto che utilizza ajax e già al click mi esce fuori un loading (che magari in fututo potrei modificare con un div e immagine di caricamento...)
lo script è questo :
Codice PHP:
<script type="text/javascript" language="javascript">
var http_request = false;
function makeRequest(url,getvar,funzione) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
//http_request.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = funzione;
http_request.open('POST', url, true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send(getvar);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.responseText);
document.getElementById("result").innerHTML = http_request.responseText;
} else {
alert('There was a problem with the request.');
}
}else{
document.getElementById("result").innerHTML ="loading";
}
}
</script>
<a href="javascript:void(null)" onclick="makeRequest('res.php?w=provavvvavvva', null, alertContents)">
Fai una richiesta...
</a>
<div id="result"></div>
e la pagina ccon il contenuto è
Codice PHP:
<?
header("Content-type:text/html;charset=iso-8859-1");
//$secretword = $_REQUEST['w'];
$secretword = $_GET['w'];
if ($secretword <> ""){
echo "<table border=\"1\" WIDTH=\"400\">";
echo "<tr><th>Riga</th></tr>";
for ( $i = 1; $i <= 10000; $i++)
{
echo "<tr><td>";
echo $i;
echo "</td></tr>";
}
echo "</table>";
?>
?>
<?
}
//echo "
La parola inserita é [b]$secretword[/b].</p>";
?>
il problema è che io vorrei quel div che mi da il risultato come contenitore della mia pagina php... ho porvato a fare...
<a href="javascript:void(null)" onclick="makeRequest('miapagina.php', null, alertContents)">
Fai una richiesta...
</a>
e poi nella miapagina.php
<div id="result">
tutto contenuto...
</div>
ma continua a non fungere...
mi date qualche consiglio... magari se c'è un modo un più elegante... è senz'altro ben accetto..
questo script in definitiva server per avere input e output sulla stessa pagina io in realta ne avrei due di pagina...
grazie per i bvostri preziosi consigli una buona notte o buona giornata
Giuseppe