Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    [AJAX] Cambiare immagine captcha

    Per un mio sito ho realizzato uno script in php che genera un captcha, per fare in modo che l'utente possa cambiarlo in caso non sia leggibile ho inserito un pulsante, ma questo al momento fa semplicemente il refresh dell'intera pagina.

    Io vorrei fare in modo invece che avvenisse una cosa di questo tipo al click del pulsante:
    - viene inviata una richiesta alla pagina php contenente lo script per la generazione dell'immagine captcha
    - nella pagina visualizzata cambia solo l'immagine, inserendo quella nuova generata dallo script

    Premesso che sono agli inizi con AJAX, ci sto provando ma non ci riesco.
    Il pulsante è così
    Codice PHP:
    <input type="button" name="invia" value="Cambia codice" onclick="changeCode()" /> 
    L'immagine si trova in una cella di una tabella ed è così impostata
    Codice PHP:
    [img]captcha.php[/img
    Per quanto riguarda la funzione, all'inizio, avevo provato semplicemente a richiamare l'attributo src in questo modo
    Codice PHP:
    document.getElementById("code").src 'captcha.php'
    oppure a mettere un div contenente l'immagine, in questo modo
    Codice PHP:
    <div id="code">
    [
    img]captcha.php[/img]
    <
    div
    e cambiare l'innerHTML del div riscrivendo completamente il tag <img> in questo modo
    Codice PHP:
    document.getElementById("code").innerHTML '[img]captcha.php[/img]'
    Ovviamente non ha funzionato nessuna delle due soluzioni, altrimenti non sarei qui.

    Qual è il modo corretto per fare ciò che vorrei?

  2. #2
    Prova così


    Codice PHP:
    document.getElementById("code").src 'captcha.php?' Math.floor(Math.random()*100); 

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Grazie, così ha funzionato, ma per quale motivo?
    Cosa accade mettendo quel numero casuale appeso alla chiamata della pagina contenente lo script?

  4. #4
    La funzione Math.floor(Math.random()*100) genera un numero casuale da 0 (se non sbaglio) a 99 (sicuro ). In questo modo, cambiando l'indirizzo, il browser "capisce" che è una nuova richiesta, perchè il caricare delle immagini sono solo richieste fatte tramite GET. Puoi mettere quello che vuoi frasi, numeri, parole. L'importante è che quando imposti l'attributo "src"
    l'indirizzo deve essere diverso da quello corrente, altrimenti non lo cambia.

    Se hai firebug, quando aggiorni l'immagine, dai uno sguardo al pannello "NET"

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Tutto chiaro, grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.