Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Validazione form via ajax

    Salve ho queste funzioni per validare un campo :

    codice:
    
    
        //###############################################
        // Validazione client
        //###############################################
    
    
        function check_client(){
    
    
            var controllo = true;
    
    
    
    
            $(".seriali").each(function(i){
    
    
                var seriale   = $(this).val();
                
                var errori_ajax =controllo_seriale_ajax(seriale); 
    
    
                if (seriale=='') {
    
    
                    alert('Seriale Vuoto');
    
    
                    controllo =false;
    
    
                }else if( seriale.length<7 || seriale.length>8){
    
    
                    alert('Seriale deve essere lungo tra 7 e 8 caratteri');
    
    
                    controllo =false;
                
                }else if(errori_ajax['error']){
    
    
    
    
    
    
                    controllo =false;
    
    
                }
    
    
            })
    
    
            console.log(errori_ajax);
    
    
            return controllo;
        }
    
    
        //###############################################
        // fine vALIDAZIONE client
        //###############################################
    
    
    
    
        //###############################################
        // vALIDAZIONE aJAX
        //###############################################
    
    
         function controllo_seriale_ajax(seriale){
            //event.preventDefault();
    
    
            var result=[] ;
    
    
            $.ajax({
    
    
                   url:"/user_Macchina/controlliInserimentoMultiplo",
                   method:"POST",
                   data:{
                            seriale:seriale,
                   },
                   dataType:"json",
                   success:function(msg)
                   {
                        console.log(msg);
    
    
                        if(msg.error)
                        {
                            result['error'] = true;
                            result['errori'] =msg.errori;
                              
                            alert(result['errori']);
    
    
                        }else{
    
    
                            result['error'] = false;
                        }
    
    
    
    
    
    
     
                   },error:function(data){
    
    
    
    
                        alert ('Chiamata Fallita');
    
    
                   },
    
    
            })
    
    
    
    
            return result;
    
    
    
    
    
    
    
    
         };
    
    
    
    
        //end  validazione ajax
        //###############################################
    Il controllo via ajax controlla se un seriale è stato gi inserito nel db o se è formattato correttamente.

    Il problema è però un altro :

    codice:
    Uncaught ReferenceError: errori_ajax is not defined
    Perchè ? al limite dovrebbe essere un array vuoto , invece l'alert dentro ajax funziona correttamente infatti mostra il messaggio seriale già presente se lo metto uno già inserito

  2. #2
    Inizializza la variabile a "array", subito dopo (o prima, cambia nulla) var controllo = true;

  3. #3
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Inizializza la variabile a "array", subito dopo (o prima, cambia nulla) var controllo = true;

    Modificato così :

    codice:
        //###############################################
        // Validazione client
        //###############################################
    
    
        function check_client(){
    
    
            var errori_ajax=[];
    
    
            $(".seriali").each(function(i){
    
    
                var seriale   = $(this).val();
                
                errori_ajax =controllo_seriale_ajax(seriale); 
    
    
                if (seriale=='') {
    
    
                    alert('Seriale Vuoto');
    
    
                    controllo =false;
    
    
                }else if( seriale.length<7 || seriale.length>8){
    
    
                    alert('Seriale deve essere lungo tra 7 e 8 caratteri');
    
    
                    controllo =false;
                
                }else if(errori_ajax['error']){
    
    
                    controllo =false;
    
    
                }else{
    
    
                    controllo =true;
                }
    
    
            })
    
    
            //console.log(errori_ajax);
    
    
            return controllo;
        }
    
    
        //###############################################
        // fine vALIDAZIONE client
        //###############################################
    stesso problema , sembra dipenda dal tempo di risposta ajax ma non so come risolvere
    Ultima modifica di pippuccio76; 11-04-2023 a 16:11

  4. #4
    La riga nella quale la Consolle ti genera errore è quella lì?
    Lo script è completo o hai saltato qualche parte per brevità? Nel senso....immagino che tu chiami la funzione check_client sul "onsubmit" del form, giusto?
    A me, a occhio, sembra corretta ma effettivamente potrebbe essere un errore dovuto alla chiamata asincrona ajax, quindi ti direi di valutare l'uso di "wait_for", ovvero async/await e Promise
    https: //stackoverflow.com/questions/21518381/proper-way-to-wait-for-one-function-to-finish-before-continuing

  5. #5
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    La riga nella quale la Consolle ti genera errore è quella lì?
    Lo script è completo o hai saltato qualche parte per brevità? Nel senso....immagino che tu chiami la funzione check_client sul "onsubmit" del form, giusto?
    A me, a occhio, sembra corretta ma effettivamente potrebbe essere un errore dovuto alla chiamata asincrona ajax, quindi ti direi di valutare l'uso di "wait_for", ovvero async/await e Promise
    https: //stackoverflow.com/questions/21518381/proper-way-to-wait-for-one-function-to-finish-before-continuing

    Siccome è un form in cui insersco delle righe controllo già ad ogni riga quindi il controllo è al click del button che poi se passa i controlli fa append di un altra riga che all'onsubmit.

    Ho visto un po stackoverflow , volevo capire però come implementare questo su un ciclo if else if else .

    Magari posso fare tutti i controlli via ajax allora toglierei il problema ma magari facendoli così imparo qualcosa di nuovo.

    Provato così :

    codice:
    //###############################################
        // Validazione client
        //###############################################
    
    
        function check_client(){
    
    
            var errori_ajax=[];
    
    
            $(".seriali").each(function(i){
    
    
                var seriale   = $(this).val();
                
                //errori_ajax =controllo_seriale_ajax(seriale); 
    
    
    
    
                $.when(errori_ajax =controllo_seriale_ajax(seriale)).done(function() {
                    // the code here will be executed when all four ajax requests resolve.
                    if (seriale=='') {
    
    
                        alert('Seriale Vuoto');
    
    
                        controllo =false;
    
    
                    }else if( seriale.length<7 || seriale.length>8){
    
    
                        alert('Seriale deve essere lungo tra 7 e 8 caratteri');
    
    
                        controllo =false;
                    
                    }else if(  errori_ajax['error']){
    
    
                        controllo =false;
    
    
                    }else{
    
    
                        controllo =true;
                    } 
    
    
                    return controllo;           
    
    
                });
    
    
    
    
    
    
            })
    
    
            //console.log(errori_ajax);
    
    
        }
    Stesso problema
    Ultima modifica di pippuccio76; 11-04-2023 a 16:55 Motivo: aggiunto codice esempio

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Io ho già risposto in questa sede (visto che hai fatto crossposting).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.