IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Php / Ajax gestion des erreurs Try/Catch ou non?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 26
    Points
    26
    Par défaut Php / Ajax gestion des erreurs Try/Catch ou non?
    Bonjour,

    J'aimerais savoir votre avis sur la meilleur méthode a utilisé pour les envoies de formulaire en ajax avec retour d'erreur. J'ai fais le tour de la question et je suis toujours en interrogation...

    Sur mon site, j'ai plusieurs formulaires ressemblant a celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form id="forgotPwd" method="get" onSubmit="return false;">
          <fieldset class="plain">
           <legend><span>Changer votre mot de passe</span></legend>
            <div class="row">
              <label for="email" class="required">Votre courriel*</label>
              <input type="text" name="email" id="email" placeholder="exemple@site.com" />
            </div><br>        <div><br>            <input type="submit" value="Envoyer" />
            </div> <br>      </fieldset>
    </form>
    Avec du jquery comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <script type="text/javascript">
    $(function() {
     
        $('form#forgotPwd').on('submit',function(e) {
            var d = $(this).serialize();
     
            $.ajax({
              url: "modules/users/handles/forgotPwd.php",
              dataType: 'json',
              type: "GET",
              data: d,
              success: function(data, status, xhr) {
                  if(data.error) {
                      alert(data.error.message);
     
                  } else {
                      alert('Success message');              
                  }
     
              },
              error: function (request, status, error) {
                    alert(request.responseText);
              }
     
            });
     
        });
    });
    </script>
    Je m'interroge a savoir pour le coté PHP, qu'elle serait la meilleur méthode a utilisé? Voici les 2 façons et dites moi vous, vous feriez quoi?

    Version 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    header('Content-Type: application/json');
     
    try {
     
        if(isset($_GET['email']) && !empty($_GET['email'])) {
            if( filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) ) {
     
               echo json_encode(array('results' => 'ok'));
     
            } else throw new Exception('Address courriel invalide',2);
        } else throw new Exception('Address courriel vide',1);
     
    } catch(Exception $e) {
     
        echo json_encode(array('error' => array('message'    => $e->getMessage(),
                                'code'      => $e->getCode() ) ));
     
    }
    Version 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function throwJsonException($msg,$code) {
        echo json_encode(array('error'=> array('code'     => $code,
                               'message'  => $msg ));
    }
     
    if(isset($_GET['email']) && !empty($_GET['email'])) {
        if( filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) ) {
     
            echo json_encode(array('results' => 'ok'));
     
        } else throwJsonException('Address courriel invalide',2);
    } else throwJsonException('Address courriel vide',1);
    Merci de vos avis, vos suggestions.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    En fait cela n'a rien à voir avec ajax, tu pourrais bien poser la même question sur php indépendamment du fait que cela soit pour une réponse ajax.

    Le grand intérêt des try/cath c'est surtout pour les fonctions et classe php qui émettent des exceptions. Si ton code génère exclusivement des "throw new Exception" - donc sans exceptions natives à gérer - l'intérêt est moins évident et tu fais bien comme tu veux.

Discussions similaires

  1. Gestion des erreurs avec le try catch
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 8
    Dernier message: 03/03/2010, 10h22
  2. [PHP 4] [PHP-AJAX] Gestion des caractères spéciaux
    Par dragonfly dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2009, 11h30
  3. Gestion des exeptions (try catch) en Java
    Par EIN-LESER dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 21/05/2008, 19h51
  4. [Oracle] [PHP] Gestion des erreurs de connexion
    Par Mimo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/06/2006, 01h17
  5. [PHP-JS] gestion des erreurs sur liste déroulente
    Par HwRZxLc4 dans le forum Langage
    Réponses: 9
    Dernier message: 28/05/2006, 03h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo