[英]AJAX error is returned as Success
AJAX錯誤返回為成功。 如何從ASP.NET MVC返回JSON錯誤? 你能告訴我我在做什么錯嗎? 謝謝。
[HttpPost]
public JsonResult Register(int EventID)
{
try
{
// code
return Json(new { success = true, message = "Thank you for registering!" });
}
catch (Exception ex)
{
return Json(new { success = false, message = ex.Message });
}
}
$.ajax({
url: "@Url.Action("Register", "Home")",
type: "post",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(postData),
success: function(data) {
},
error: function (data) {
}
});
僅當HTTP響應代碼不是HTTP 200 Ready
時,才會執行error
功能。 您在服務器端處理錯誤並返回正確的響應,該響應將由AJAX調用中的success
函數獲取。 相反,請在JSON中使用status
變量並在客戶端進行處理:
success: function(data) {
if (typeof data == "string")
data = JSON.parse(data);
if (data.success) {
// Code if success.
} else {
// Code if error.
}
},
從文檔中 (向下滾動至error
部分):
如果請求失敗,將調用的函數。 該函數接收三個參數:jqXHR對象(在jQuery 1.4.x中為XMLHttpRequest),一個描述發生錯誤的類型的字符串,以及一個可選的異常對象(如果發生)。 第二個參數(除
null
之外)的可能值為"timeout"
,"error"
,"abort"
和"parsererror"
。 發生HTTP錯誤時,errorThrown
會接收HTTP狀態的文本部分,例如“未找到”或“內部服務器錯誤”。 從jQuery 1.5開始 ,error
設置可以接受函數數組。 每個函數將依次調用。 注意: 對於跨域腳本和跨域JSONP請求,不會調用此處理程序。 這是一個Ajax事件 。
僅當服務器端出現黃屏錯誤 時,才會打出 Ajax 錯誤方法 。 在您的方案中,您正在使用try catch處理錯誤並返回有效響應。 因此,這不是錯誤,而是有效的響應。 刪除您的try catch,以便Ajax接收錯誤事件,否則,如果您想顯示服務器上的實際錯誤消息,則可以使用success
屬性來確定響應是成功還是錯誤 ,類似於Praveen已經在他的答案中發布了。
success: function(data) {
if (data.success) { //as you are passing true/false from server side.
// Code if success.
} else {
// Code if error.
}
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.