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

    [jQuery] $.ajax gestire error su success

    Buongiorno,

    qualcuno mi puo' indicare un metodo efficace per gestire gli errori di submit di un form con jQuery?

    Nello specifico devo effettuare una determinata funzione in base al risultato lato server ottenuto dal submit di un form

    Codice PHP:
    $("#login-form").submit(
        function () {
            var 
    dati = $("#login-form").serialize();
            $.
    ajax(
                    {
                
    type"POST",
                
    url"logic/login.php",
                
    datadati,
                
    dataType"html",
                
    success: function (data) {
                    $(
    '#login > .alert').fadeIn();
                    $(
    '#login > .alert > #output').html(data);
                    
    setTimeout(
                        function() { 
                            $(
    '#login > .alert').fadeOut();
                        }, 
                        
    7000
                    
    );
                }
                }
            );
            return 
    false;
        }
    ); 
    Come potete vedere il risultato del submit viene inviato un div di alert che mostra se ci sono errori oppure se l'invio è andato a buon fine, ma se io volessi fare 2 operazioni distinte in base alle due possibilità come posso fare?

    attendo fiducioso
    Questa volta, più che un voto.. è favoreggiamento.

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Re: [jQuery] $.ajax gestire error su success

    Originariamente inviato da Al_katraz984
    ...ma se io volessi fare 2 operazioni distinte in base alle due possibilità come posso fare?
    in che senso?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3

    Re: Re: [jQuery] $.ajax gestire error su success

    Originariamente inviato da fcaldera
    in che senso?
    nel senso che non posso utilizzare "error:" perchè mi da solo gli errori inerenti alla chiamata ajax

    Io devo comunque gestire gli errori;

    1- nel caso ci siano degli errori formali sui campi del form vengono visualizzati sul div "alert" per 7 secondi (come da funzione sopra)

    2- se il form è inviato nel modo corretto mi viene visualizzato il messaggio di successo sul div "alert" per 7 secondi


    invece io devo separare le due cose.. ad esempio mettendo un window.location.reload(); nel caso 2
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    controlla la risposta che ricevi dal server, poi fai le tue valutazioni

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Re: Re: Re: [jQuery] $.ajax gestire error su success

    Originariamente inviato da Al_katraz984
    nel senso che non posso utilizzare "error:" perchè mi da solo gli errori inerenti alla chiamata ajax

    Io devo comunque gestire gli errori;

    1- nel caso ci siano degli errori formali sui campi del form vengono visualizzati sul div "alert" per 7 secondi (come da funzione sopra)

    2- se il form è inviato nel modo corretto mi viene visualizzato il messaggio di successo sul div "alert" per 7 secondi


    invece io devo separare le due cose.. ad esempio mettendo un window.location.reload(); nel caso 2
    allora devi cambiare tipo di risposta.
    Al momento tu invii al client una semplice stringa da visualizzare: potresti invece far ritornare dal server un'informazione più strutturata: ad esempio un JSON del tipo

    codice:
    {
        status: "0",  /* 0 oppure 1 in caso di errore o successo */
        message: "lorem ipsum sit dolor amet"
    }
    e cambiare la tua chiamata ajax

    codice:
    $("#login-form").submit(
        function () {
            ...
    
            $.ajax({
                ...
                dataType: "json",
                success: function (data) {
    
                    /* data.message contiene la stringa */
                      
                    if (data.status === "0") {
                         /* errore */
                    }
                    else {
                         /* ok */
                    }
    
                }
           });
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6

    Re: Re: Re: Re: [jQuery] $.ajax gestire error su success

    Originariamente inviato da fcaldera
    allora devi cambiare tipo di risposta.
    Al momento tu invii al client una semplice stringa da visualizzare: potresti invece far ritornare dal server un'informazione più strutturata: ad esempio un JSON del tipo
    era quello che volevo evitare ma mi pare di capire che non c'è un modo più semplice per farlo mantenendo come risposta html..


    @vindav si faccio già tutti i controlli il problema è separare gli errori dal "buon fine" e mi toccherà farlo tramite un array..
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se vuoi fare le cose per bene usa un oggetto strutturato come suggerito da fcaldera, ma nulla ti vieta di controllare l'html e verificare per esempio che ci sia scritto "errore", o cmq qualche cosa che ti indichi che il messaggio ricevuto dal server è un errore.

  8. #8
    Originariamente inviato da Vindav
    se vuoi fare le cose per bene usa un oggetto strutturato come suggerito da fcaldera, ma nulla ti vieta di controllare l'html e verificare per esempio che ci sia scritto "errore", o cmq qualche cosa che ti indichi che il messaggio ricevuto dal server è un errore.
    ho già riscritto la risposta in json-like

    piuttosto delle regular expression mi faccio l'array grazie per l'aiuto
    Questa volta, più che un voto.. è favoreggiamento.

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.