Visualizza messaggio di errore con jQuery senza ricaricare la pagina

0

Ho creato il modulo di accesso. Quando l'utente fa clic sul pulsante di accesso, questo modulo si presenta con qualche effetto di dissolvenza (jQuery). Quello che voglio fare è visualizzare un messaggio di errore in questo modulo quando l'utente inserisce dati non validi. Prima di mostrare qualsiasi messaggio, PHP deve leggere i dati dal database, quindi la pagina deve essere ricaricata e quando la pagina viene ricaricata questa forma svanisce. Come posso visualizzare un messaggio di errore in questo modulo di login senza ricaricare la pagina?

(Ho un sacco di codice quindi se hai bisogno di una parte di codice che fornirò)

    
posta Alen 30.07.2013 - 10:53
fonte

2 risposte

2

Quello che stai cercando sono i metodi ajax di JQuery.

Possono ottenere dati dal server e aggiornare la dom al volo senza ricaricare la pagina.

Questo è abbastanza semplice usando Ottieni o Post

JQuery ha anche altri metodi ajax che possono essere anche utili.

    
risposta data 30.07.2013 - 11:01
fonte
0

Ecco il mio script di login jQuery / AJAX proccess. Hai solo bisogno di creare alcuni div / spans nel tuo form per il messaggio di errore e il caricamento e per far funzionare questo, nel tuo script PHP di accesso devi aggiungere se il login è corretto echo'1 '; o qualunque sia la tua eco di successo nel tuo cambio di script PHP che in questa parte del codice jQuery

if(result === '1' ) {  // This is PHP success echo, in my case is number 1

  window.location='index.php';  // Uppon successfull login in my case redirects to index.php 
}
$(function() {

  $( '.login' ).submit(function(e) { // My form has class login, dont forget to change this to your form class or id

    e.preventDefault();

    var error   = 0;

    var lForm   = $( this ),
        lName   = $( '.login input[name="login"]' ).val(),
        lPass   = $( '.login input[name="password"]' ).val(),
        errMsg  = $( '.login-err' ); // Create div or span with class login-err or whatever class you wish


    if ( lName == 'Username' ) {  // Username in this case is default value
      error = 1;
      errMsg.html( '<p>Enter User Name and Password.</p>' ); //Here insted .html you could use .text
    }

    if ( lName.length > 32 || lName.length < 3 ) {
      error = 1;
      errMsg.html( '<p>Name must be between 3-32 characters.</p>' );
    }

    if ( lPass == 'Password' ) {  // Password in this case is default value
      error = 1;
      errMsg.html( '<p>Enter User Name and Password.</p>' );
    }

    if ( error ) {                  
      errMsg
        .fadeIn( 'slow' )
        .delay( 1800 )
        .fadeOut( 'slow' );

        return false;
    }
    else {

      $( this ).fadeOut(function() {

        $( '.loading' ).fadeIn(function() { // For this create div or span with class "loading" or whatever class you wish and put some pretty loader gif in it

          $.ajax({
            type: 'POST',
            url: lForm.attr( 'action' ),
            data: lForm.serialize(),
            success: function(result) {

              if(result === '1' ) {
                window.location='index.php';
              }
              else {

                $( '.loading' ).fadeOut(function() {

                  lForm.fadeOut( 'slow' );

                   errMsg
                     .fadeIn( 'slow' )
                     .delay( 1800 )
                     .fadeOut( 'slow' )
                     .html( '<p>Incorrect User Name or Password.</p>' );

                   lForm.delay( 2400 ).fadeIn( 'slow' );

                 });
                }
              }
            });
          });
        });
      }
    });

});
    
risposta data 01.09.2013 - 15:27
fonte

Leggi altre domande sui tag