2013-10-14 5 views
0

Je viens d'avoir une question générale: J'envoie une demande POST à ​​mon application backend Java (j'utilise jQuery pour l'envoyer) et fondamentalement, il me donne l'erreur 500 Server interne, mais c'est bien. La question est comment puis-je l'afficher comme une alerte, car je peux voir l'erreur dans la console, mais je veux qu'il soit visible (et éventuellement personnalisé) pour les utilisateurs. L'erreur survient lorsque l'utilisateur tente d'ajouter un nouvel enregistrement et le publie, mais la validation du côté serveur échoue. Voici le code pour envoyer la demande:comment afficher 500 erreur interne du serveur

createCandidate: function (candidate, onSuccess){  
     $.ajax({ 
      url : 'ws/catservices/createCandidate', 
      type : 'POST', 
      async: false, 
      contentType : 'application/json', 
      data : JSON.stringify(candidate), 
      failure : function(jqXHR, textStatus, errorThrown) { 
       alert("error" + textStatus); 
      }, 
      success: onSuccess 
     }); 
    } 

Et voici ce que je vois dans la console:

[10:12:52.762] POST http://localhost:8080/cat_prototype/ws/catservices/createCandidate [HTTP/1.1 500 Internal Server Error 46ms] 

Est-il possible de le faire?

+0

Il y a 1000 façons. Vous pouvez utiliser une simple alerte, un survol, une boîte de dialogue personnalisée, etc. Si vous le souhaitez, vous pouvez également effectuer une validation côté client, de sorte que vous n'ayez pas à déranger votre serveur si souvent avec la validation (ce qu'il devrait faire!). Que voulez-vous exactement? –

Répondre

3

essayez d'utiliser

$.ajax({ 
     url : 'ws/catservices/createCandidate', 
     type : 'POST', 
     async: false, 
     contentType : 'application/json', 
     data : JSON.stringify(candidate), 
     failure : function(jqXHR, textStatus, errorThrown) { 
      alert("error" + textStatus); 
     }, 
     statusCode: { 
      500: function() { 
      alert("message"); 
      } 
     } 
     success: onSuccess 
    }); 
+1

vous avez oublié de fermer statusCode avec "}" mais à part ça a fonctionné parfaitement :) Merci beaucoup! – Lucas

+0

Merci pour suggestion, j'ai mis à jour la réponse. –

1

jQuery dispose de deux méthodes que vous pouvez utiliser. complete qui va gérer la réponse quel que soit son statut et error qui sera appelée sur une erreur.

$.ajax({ 
    // ... 
    error: function(xhr, status, error) { 
     var error = eval("(" + xhr.responseText + ")"); 
     alert(error.Message); 
    } 
}); 
1

Il n'y a pas failure clé sur $.ajax. Check the manual. Il est appelé error, il suffit donc de remplacer failure: par error:.

+0

+1 pour signaler qu'il n'y a pas de clé de défaillance –