ti garantisco che è una cosa molto comune... :)
... e utile ;)
ti garantisco che è una cosa molto comune... :)
... e utile ;)
Come ha già scritto ProjectFede, è una pratica più che diffusa ma non comporta alcun problema, al massimo una leggerissima diminuzione delle prestazioni (ma comunque il risultato varia sempre dal motore Javascript), ma nel tuo caso è del tutto trascurabile.
Se non fornisci un argomento oggettivo per il quale non condividi questa implementazione è difficile discuterne.
Non guardavo a questioni di efficienza, mi limitavo a dire che mi sembrava meno leggibile e comunque meno "bella" da un punto di vista "stilistico"...ovviamente la cosa è soggettiva.
Mi chiedevo dunque se fosse possibile un'alternativa che non prevede questa pratica :)
Un'ultima questione...vorrei fare in modo che quando clicco su un bottone che richiama la funzione in discussione sopra compaia una rotella di caricamento nel div in cui poi inserirò il file da includere, e che sparisca quando l'inclusione è stata completata...è possibile?
Ancora un piccolo problemino...
Il codice che ho usato è questo:
Dove wait.php contiene la scritta "caricamento in corso".Codice:function load(URL, element){ sendRequest('wait.php', handleRequest); sendRequest(URL, handleRequest); function handleRequest(req){ element.innerHTML = req.responseText; } }
Il problema è che una volta ogni tanto (parlo di una su 20 o 30 credo) compare la scritta "caricamento in corso" ma poi rimane quella e non viene più caricato il file URL.
Può essere dovuto al fatto che quella volta su 20 arriva prima la risposta del file URL e poi quella del wait.php?
Come posso rimediare?
Perché non mettere la scritta direttamente nell'elemento?
Codice:function load(URL, element){ element.innerHTML = 'Caricamento in corso'; sendRequest(URL, function(req) { element.innerHTML = req.responseText; } ); }
Era perchè in realtà non è solo una scritta ma ci sono vari elementi (div, scritte, immagini) che compongono la schermata di attesa)...dici che può essere questo il problema?
Non ha semplicemente senso caricare dall'esterno la scritta di caricamento (neppure se non è solamente una banale scritta), la includi nel documento caricante come ti ha mostrato Dreadnaut.
Beh il senso è di evitare di scrivere una pagina di codice php all'interno di una funzione js.
Effettivamente facendo come dite il problema è risolto...ma poteva essere causato dal fatto che la risposta alla prima richiesta arrivava dopo la risposta alla seconda? Cioè al fatto che sono richieste asincrone?
Certamente, il problema è quello. Potresti eseguire la prima in modo sincrono andando a toccare sendRequest ma rallenteresti il tuo sito inutilmente.
Il problema è che vuoi mostrare qualcosa di troppo complesso al caricamento; usa un messaggio più semplice.
Anche per curiosità...in che modo potrei "toccare" la sendRequest per eseguire la prima in modo sincrono?
Ho letto ma non avendo molta confidenza con AJAX non mi è chiaro come modificare la mia funzione...io non richiamo mai questa funzione open giusto? Come posso modificare il codice dunque?
Ti ricordi, una pagina fa, che stavamo parlando di prendere del codice da una guida online, che conteneva una funzione sendRequest()?
Hai guardato nella funzione?
Quindi devo scrivere:
?Codice:req.open(method,url,false);
Cioè dovrei definire in realtà una sendRequest sincrona e una asincrona?
Grazie! ;) Un'ultima cosa...se la prima chiamata la faccio sincrona e la seconda asincrona, la seconda non viene chiamata finchè non ricevo la risposta della prima?