2013-10-14 21 views
0

我只是有一個普遍的問題:我發送POST請求到我的Java後端應用程序(我使用jQuery發送它),基本上它給我500內部服務器錯誤,但這是精細。問題是我如何將它顯示爲警報,因爲我可以在控制檯中看到錯誤,但我希望它可以(並可能定製)給用戶。該錯誤是由於用戶試圖添加新記錄併發布它時引起的,但是它在服務器端驗證失敗。這裏的發送請求的代碼:如何顯示500內部服務器錯誤

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 
     }); 
    } 

而且這是我在控制檯中看到:

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

是否有這樣做的一種方式?

+0

有1000分的方式。您可以使用簡單的警報,彈出窗口,自定義對話框等。如果你想要的話,你也可以做客戶端驗證,這樣你就不必經常用驗證來煩擾你的服務器(它永遠不應該這麼做!)。你想要什麼? –

回答

3

嘗試使用

$.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

你忘了關閉statusCode的「}」,但除此之外工作完美:)非常感謝你! – Lucas

+0

感謝您的建議,我已經更新了答案。 –

1

jQuery有兩種方法可以使用。 complete它將處理響應,而不管它的狀態和error哪個將被調用一個錯誤。

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

上有$.ajax沒有這樣failure關鍵。 Check the manual

它被稱爲error,因此只需將failure:替換爲error:即可。

+0

+1指出沒有失敗的關鍵 –