2016-01-27 12 views
5

Ho un modulo di registrazione e voglio controllare se l'utente registrato proverà a registrarsi di nuovo per mostrare una finestra di avviso già registrata utilizzando una funzione jax.come si può ricaricare la pagina quando i dati utilizzano la funzione di successo di ajax in javascript codeigniter php?

ho utilizzato il framework codeigniter.

la mia funzione funziona correttamente, ma quando il popup di avviso e premere OK pagina viene ricaricata. Voglio disabilitare

il mio codice del modulo:

<form class="modal-content" name="form2" action="<?= $this->config->base_url();?>home/register_user" method="post" onSubmit="return ValidateRegister()"> 
               <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
          <span aria-hidden="true">×</span> 
          </button> 
          <h4 class="modal-title">Create your account</h4> 
         </div> 
         <div class="page-content vertical-align-middle" style="display:block;"> 
     <div class="form-group has-error"> 
        <label class="control-label" for="inputTokenfieldError-tokenfield"> <?php echo validation_errors(); ?></label> 

        </div> 
     <div class="form-group form-material floating"> 
      <input type="text" class="form-control " id="inputName" name="username" value="<?php echo set_value('username'); ?>" autocomplete="off"> 
      <label class="floating-label">Username</label> 
     </div> 
     <div class="form-group form-material floating"> 
      <input type="email" class="form-control " id="my_email" name="email" value="<?php echo set_value('email'); ?>" autocomplete="off"> 
     <label class="floating-label">Email</label> 
     </div> 
     <div class="form-group form-material floating"> 
      <input type="password" class="form-control " id="inputPassword" name="password" autocomplete="off"> 
      <label class="floating-label">Password</label> 
     </div> 

<div class="form-group"> 
     <button type="submit" class="btn btn-primary btn-block">Join Now - It's Free</button> 
</div> 

     </form> 

mia funzione javascript:

function checkRegistrations() 
     { 
      var email = $('#my_email').val(); 
      $.ajax({ 
       url: "<?= base_url() ?>home/checkRegistration", 
       async: false, 
       type: "POST", 
       data: "email="+email, 
       dataType: "html", 
       success: function(data) { 
        // alert(data); 
        if(data==1) 
        { 

        //event.preventDefault(); 
        alert('Email already registered'); 
        return false; 
        window.location.reload(false); 
        } 
        else{ 

         return true; 
        } 
       } 
      }) 
     } 
+0

Che cosa si intende per _want per disabilitare la mia forma _codice? – Rayon

risposta

1

Si sta restituendo vero/falso dall'interno di un annone. funzione cioè gestore di successo. Ma la funzione genitore non restituisce vero/falso.

modificare il codice in questo modo:

function checkRegistrations() 
     { 
      var email = $('#my_email').val(); 
      var isValid = true; 
      $.ajax({ 
       url: "<?= base_url() ?>home/checkRegistration", 
       async: false, 
       type: "POST", 
       data: "email="+email, 
       dataType: "html", 
       success: function(data) { 
        if(data==1) 
        { 
        alert('Email already registered'); 
        isValid = false; 
        } 
       } 
      }); 
      return isValid; 
     } 
3

basta aggiungere un id per il pulsante di invio, dicono #submitbutton.

e utilizzare il metodo .prop() di jQuery per impostare l'attributo disabilitato del pulsante.

$("#submitbutton").prop("disabled", true); 

IMP: Questo funziona solo se si stanno mantenendo la stessa pagina su ajax success, Ma se sei ricaricare pagina, allora avete bisogno di controllare su php lato se questa forma è stata presentata in questo attuale $_SESSION.

Quindi all'interno del gestore di ajax php, è possibile eseguire il controllo come segue.

session_start(); 
if(!empty($_POST) && empty($_SESSION['post'])) { 
    $_SESSION['post'] = true; 
    ... do your code 
    unset($_SESSION['post']); 
}else{ 
// send the json encoded error message 
} 

E sul modulo html basta aggiungere un hiddeninput con il nome post e impostare value a 1 o qualcosa di tutto ciò che ritiene più opportuno, quindi una volta che il modulo viene inviato, la chiave post sarà impostata all'interno del $_SESSION superglobale Matrice e se lo stesso modulo viene inviato due volte dallo allo stesso utente, php non lo accetterà.

Problemi correlati