Ciao,
Vorrei un aiuto perché non riesco a ricaricare un'immagine captcha in un mio modulo, nel caso in cui la scritta non risultasse molto chiara. Dovrei fare il refresh, perciò, solo dell'immagine e NON di tutta la pagina.
Da varie ricerche in rete, vedo che si può fare con AJAX, che però non conosco ancora. Perciò vi chiedo aiuto.
La pagina php che genera l'immagine l'ho chiamata - captcha.php - mentre quella del form che la richiama - contatti.php.
Vi mostro il semplice tag HTML di quest'ultima:
codice:
[img]captcha.php?token=<?php echo $url_key; ?>[/img]
qui richiamo il file appunto captcha.php con il parametro in GET visto che poi - contatti.php - genera una chiave casuale univoca che salvo su db, e che viene appunto passata tra i due files, (NON uso perciò le sessioni, o i cookies come fanno molti script).
Ho fatto vari tentativi, ad es. ho modificato il tag qui sopra in:
codice:
<iframe id="captcha" src="captcha.php?token=<?php echo $url_key; ?>" ></iframe>
Ricarica l'immagine
ovvero ho usato il tag iframe invece di img, e poi ho provato ad usare questo codice Javacscript:
codice:
function cambiaCaptcha()
{
document.getElementById('captcha').src='captcha.php?token=<?php echo $url_key; ?>';
}
Se clicco allora sul link che ora appare, per cambiare appunto l'immagine, mi sparisce tutto e non vedo più niente.
In seguito ho provato anche a modificare il codice Javascript, anche per evitare che il browser conservasse nella sua cache l'immagine precedente, come fa di default. Di conseguenza ho modificato il tag HTML, eliminando <iframe> e ritornando al semplice <img> dove passo un id che mi serve per dire allo script in .js, che qui sotto indico, di ricaricare appunto quel determinato id che contiene purtroppo la variabile in PHP che "scombina" il tutto.
Ecco la nuova modifica:
Ecco il nuovo .js reloadImg(id) che però ancora NON funziona.
codice:
function reloadImg(id) {
var obj = document.getElementById(id);
var src = obj.src;
var pos = src.indexOf('?');
if (pos >= 0) {
src = src.substr(0, pos);
}
var date = new Date();
obj.src = src + '?v=' + date.getTime();
return false;
}
Idee?
Grazie e ciao.[B][U][B]