Exécuter la fonction javascript sur une erreur ajax

J’utilise la fonction ajax suivante pour appeler un service Web. Si j’obtiens une erreur, j’aimerais qu’elle déclenche une fonction javascript. UserCreate ()

$.ajax({ type:"POST", beforeSend: function (request) { request.setRequestHeader("X-DreamFactory-Application-Name", "snapcentral"); request.setRequestHeader("X-DreamFactory-Session-Token", sessID.dream); }, url: url, data: '{"username":"' + userStats.loginID + '","lithid":"' + userStats.userID + '"}', success: function(data) { dbData = data; console.log('createUsers Executed sucessfully'); }, error: function (request, status, error) { console.log("createUser: " + request.responseText); createUser(); } }); 

Tout fonctionne comme prévu, à l’exception de la section “erreur” qui ne déclenche pas la fonction createUser (). Qu’est-ce que je fais fondamentalement mal et comment puis-je obtenir la requête pour exécuter une fonction en cas d’erreur.

La fonction que j’ai écrite pour createUser fonctionne si j’appelle autonome ..

Des conseils et / ou une direction seraient les bienvenus – merci.

Le rappel d’ error de jQuery n’est appelé que si le serveur répond avec un code d’erreur ou ne répond pas du tout. Si vous répondez avec 200 et un message d’erreur dans votre réponse, le rappel de success sera appelé. Malheureusement, jQuery n’est pas si intelligent.

Au lieu de cela, vous pouvez soit renvoyer un code d’erreur, soit vérifier votre rappel de success s’il y a un message d’erreur.

Comme @SomeKittens mentionné, l’ error n’est appelée que lorsque le serveur répond avec un code d’erreur ou ne répond pas du tout.

Cependant, vous pouvez renvoyer quelque chose sur le serveur, si quelque chose ne va pas, telle que la validation du formulaire n’a pas réussi, et l’utilisateur doit corriger quelque chose.

Par exemple ceci:

 if($_POST['first_last'] === ""){ echo "Name is not right here."; return false; } 

Ensuite, vous pouvez utiliser le success sur votre jQuery pour traiter ceci:

 success: function(data) { if(data == "Name is not right here."){ alert(data); return false; } else{ // do stuff } }