簡體   English   中英

AJAX錯誤返回為成功

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM