2016-05-12 12 views
0

AJAXエラーが成功として返されます。 ASP.NET MVCからJSONエラーを返すには?私が間違っていることを教えてください。ありがとうございました。AJAXエラーが成功として返されます。

[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) { 
        } 
       }); 
+0

ここでAJAXエラーとはどういう意味ですか?回答には何が含まれていますか? –

+2

あなたはサーバー上でエラーを捕らえ、有効なjson(エラーではない)を返しています。 'error:'コードをヒットさせたい場合は、例外をキャッチしないでください –

答えて

2

error機能は、HTTPレスポンスコードHTTP 200 Readyない場合にのみ実行されます。サーバー側のエラーを処理し、適切な応答を返します。これは、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. 
    } 
}, 

docsから(errorセクションまでスクロール):

A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout" , "error" , "abort" , and "parsererror" . When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note:This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event .

2

アヤックスエラーメソッドがヒットしましたの場合にのみ黄色の画面エラーがサーバー側に表示されます。あなたのシナリオでは、try catchを使用してエラーを処理し、有効な応答を返します。したがって、これはエラーではなく有効な応答と見なされます。 のtry catchを削除して、Ajaxがエラーイベントを受け取るようにします。サーバーからの実際のエラーメッセージを表示する場合は、successプロパティを使用して、応答が成功かエラーかを判断します。 Praveenがすでに彼の答えに掲載しているものと同様です。

関連する問題