2014-07-14 5 views
0

Mon code ajax ressemble à ceci qui vérifient le formulaire d'inscription nom d'utilisateur, email, etc ...A propos de AJAX, FORME ET PHP

jQuery(document).ready(function($) { 
$("#formform").on('change', 'input',function(event){ 
    var $form = $(this); 
    var $inputs = $form.find("input, select, button, textarea"); 
    var serializedData = $form.serialize(); 
    $inputs.prop("disabled", true); 

    request = $.ajax({ 
     url: "/registration_check.php", 
     type: "post", 
     data: {formData:serializedData}, 
     datetype: "JSON" 
    }); 
    request.done(function (response, textStatus, jqXHR){ 
     console.log(response); 
    }); 
    request.fail(function (jqXHR, textStatus, errorThrown){ 
     console.log("error"); 
    }); 
    request.always(function() { 
     $inputs.prop("disabled", false); 
    }); 
    event.preventDefault(); 
}); 
}); 

Et mon regard PHP comme ceci:

$get_form_data=$_POST["formData"]; 
parse_str($get_form_data,$form_data); 

if(isset($form_data["username"])){ 
    if(strlen($form_data["username"])<5){ 
     echo "Username must be at least 5 character"; 
    }else{ 
     if(ValidUserName($form_data["username"])){ 
      if($checkUser->checkUserName(char_encoder($form_data["username"]))==true){ 
       echo "Sorry this UserName Already Exist"; 
      }else{ 
       echo "UserName Available"; 
      }; 
     }else{ 
      echo "Invalid Username"; 
     } 

    } 

} 

maintenant Comment puis-je désactiver le formulaire lorsque le nom d'utilisateur invalide vient d'AJAX comme réponse?

Je pense que je devrais utiliser return false..mais je ne sais pas comment gérer la réponse?

+1

Vous avez '$ inputs.prop (" désactivé ", faux);' qui activera toujours vos champs après la réponse. – putvande

+0

Vérifiez "données", dans la réponse Ajax, 'if (data ==" Nom d'utilisateur invalide ") {event.preventDefault();}' –

+0

Pratik il est juste échantillon php pour nom d'utilisateur invalide il y a plus de choses comme INvalid EMail, Invalid Password , Invalid Details et bla bla bla :(choses getts plus compliqué n'est-ce pas? – quersfas

Répondre

1

essayer comme ci-dessous le format que vous pouvez gérer la réponse en cas de succès:

var $form = $(this); 
var serializedData = $form.serialize(); 
$.ajax({ 
    type: "POST", 
    url: "/registration_check.php", 
    data: { 
     formData:serializedData 
    }, 
    beforeSend: function() { 
     //do stuff like loading process until you get the response 
    }, 
    success: function (resp) { 
     var obj = jQuery.parseJSON(resp); 
     //console.log(obj); // this will display response in console. 
     //do stuff here 

    }, 
    error: function(e){ 
     alert("Error in ajax call: "+e); 
    } 

}); // complete AJAX 

PHP CODE:

$array = array(); 
if (isset($form_data["username"])) { 
    if (strlen($form_data["username"]) < 5) { 
     $array['success'] = false; 
     $array['message'] = "Username must be at least 5 character"; 
    } else { 
     if (ValidUserName($form_data["username"])) { 
      if ($checkUser->checkUserName(char_encoder($form_data["username"])) == true) { 
       $array['success'] = false; 
       $array['message'] = "Sorry this UserName Already Exist"; 
      } else { 
       $array['success'] = true; 
       $array['message'] = "UserName Available"; 
      } 
     } else { 
      $array['success'] = false; 
      $array['message'] = "Invalid Username"; 
     } 
    } 
    echo json_encode($array); 
} 
+0

Comment puis-je désactiver la forme lorsque php envoyer nom d'utilisateur invalide, email invalide etc .. :( – quersfas

+0

Vous pouvez gérer cela dans la fonction de rappel de succès comme une fois que vous obtenez email invalide dans le rappel de succès, vous pouvez vider cette boîte de texte et afficher le message que vous obtenez du fichier php dans l'objet json –

+0

Oui l'homme ... Vraiment merci .. résolu mon problème très proprement .. Vous êtes génial :) – quersfas

0

faire appel ajax sur formulaire soumettre un événement et appelez event.preventDefault(); si ajax retourne tout Erreur. Espérons que cette aide :)