Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    residenza
    Umbria
    Messaggi
    46

    Bloccare invio di un form tramite JS + AJAX

    Salve a tutti.
    Premetto che utilizzo AJAX da poco tempo e forse non ho ancora le idee molto chiare.

    Ho un form contenente un unico campo input che inizia con questa riga di codice:

    codice:
    <form method=post action='nl3.php' onsubmit='return checkEmail(emailu)'>
    Il mio obiettivo è che il contenuto del campo venga verificato tramite una chiamata AJAX per controllare che il valore immesso esista nel database. Se AJAX ritorna 0 (cioè il valore immesso non esiste) vorrei dare un Alert e bloccare il form.

    Questo è il mio codice JS:
    codice:
    	function checkEmail(campo) {
    			var email = campo.value;
    			if (email=="") {
    				alert("Si prega inserire indirizzo email");
    				return false;
    			}
        myRequest = CreateXmlHttpReq(myHandler);
        myRequest.open("GET","../AJAX/SERV_checkemail.php?email="+email);
        myRequest.send(null);
        return myHandler();
    			}				
    			
    			
    	function CreateXmlHttpReq(handler) {
     		 var xmlhttp = null;
     		 xmlhttp = new XMLHttpRequest();
     		 xmlhttp.onreadystatechange = handler;
     		 return xmlhttp;
    	}
    
    function myHandler() {
        if (myRequest.readyState == 4 && myRequest.status == 200) {
            alert(myRequest.responseText);
        }
        if (myRequest.readyState == 4 && myRequest.status != 200) {
            alert("File php non disponibile " + myRequest.status);
        }
    }
    In altre situazioni ho usato codice simile per scrivere messaggi o dati in un div e funziona bene, ma qui non riesco a capire come restituire un "false" al form per impedirne l'invio.

    Chiaramente è proprio una mia lacuna concettuale, non un errore di codice. Grazie mille a chi mi aiuterà.
    sergio di sunelweb

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    al submit del form ritorna comunque false, non myHandler
    il form non puo' aspettare il risultato della chiamata asincrona (non per niente e'... asincrona!)

    in myHandler e' dove deciderai se inviare (forzando un submit del form via javascript) o meno

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    residenza
    Umbria
    Messaggi
    46
    Grazie Xinod.
    In altri termini però questo significa che non posso condizionare la trasmissione del form al risultato della richiesta Ajax. Se sottometto comunque il form, tanto vale riaggiornare la pagina con dati diversi a seconda del risultato, cioè fare a meno di Ajax.
    O sbaglio?
    sergio di sunelweb

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ma come no! rileggi

    al submit del form tu devi ritornare false = non viene inviato
    pero' a quel punto hai gia' inviato la tua richiesta asincrona, al momento della ricezione se devi inviare invii, con document.nomeForm.submit() o document.getElementById('idForm').submit()
    altrimenti non invii

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    residenza
    Umbria
    Messaggi
    46
    aaahhh ! scusa non avevo capito.

    Ora è tutto chiaro ! Grazie 1000 !!!!
    sergio di sunelweb

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    di nulla,
    buon proseguimento

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.