Utilisation de la fonction error dans jquery / ajax

Je travaille sur un module de connexion en ajax / php en utilisant jquery. J’ai besoin de lancer une exception de php à ajax, pour indiquer si l’email ou le mot de passe est faux.

J’ai cherché sur tout le Web un moyen d’utiliser la fonction ‘erreur’ proposée par ajax de jquery. J’ai trouvé des solutions, aucune d’entre elles ne fonctionne.

J’ai essayé de lancer une exception php: la fonction d’erreur ne l’attrape pas; essayé d’éviter d’utiliser la fonction d’erreur en envoyant des données encodées JSON: aucun moyen de l’utiliser en fonction de succès … La fonction d’erreur semble ne capturer que les erreurs de serveur, ce qui n’est vraiment PAS intéressant.

Quelqu’un peut-il, s’il vous plaît, m’aider à trouver un moyen de communiquer les erreurs de php via ajax?

Définissez le code d’état de la demande dans la réponse php sur 4XX ou 5XX. Cela vous fera vous retrouver dans le rappel d’ error / fail .

Je ne dois pas nécessairement être une valeur dans la liste. Par exemple, vous pouvez créer le vôtre:

 StatusCode: 550 StatusText: "My Custom Error" 

Ce qui, si je me souviens bien, ressemblerait à ceci en PHP:

 header('HTTP/1.0 550 My Custom Error'); 

Enfin, envoyez les détails de l’erreur au client pour l’informer de ce qui ne va pas. Vous pouvez soit placer les informations dans l’en-tête, soit sérialiser l’exception à l’aide de json_encode()

  'vanilla!', )); } catch (Exception $e) { echo json_encode(array( 'error' => array( 'msg' => $e->getMessage(), 'code' => $e->getCode(), ), )); } ?> 

Côté client:

 $.ajax({ url: 'page.php', data: { 'some_bad_condition': true } }).done(function(data){ console.log('success!', data); }).fail(function(jqXhr){ var errorObject = $.parseJSON(jqXhr.responseText); console.log('something went wrong:', errorObject); //jqXhr.status === 550 //jqXhr.statusText === 'My Custom Error' }); 

N’oubliez pas de spécifier le type MIME correct dans votre fichier PHP. Ainsi, jQuery saura qu’il s’agit d’une réponse JSON sans que vous le spécifiiez explicitement.

 header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); 

Essayez d’utiliser ce plugin:

AJAXForm

Obtenez-le ici.

Le ajax gère la soumission du formulaire, et s’il y a une erreur, le rappel d’erreur sera utilisé.

Je pense avoir déjà utilisé cela. Il est assez facile à utiliser et vérifiez également si votre code de statut de retour est correct dans votre php.