2012-06-13 3 views
2

저는 Ajax와 ASP.NET MVC가 매우 새롭습니다. 나는 AJAX로 돌아가는 함수를 가지고 있으며 오류 상황을 처리해야한다. 모든 것이 잘 작동하면 코드는 괜찮습니다. 내 질문은 오류 부분을 처리하는 방법입니다. 여기에 내가 가진 무엇 :ASP.NET에서 AJAX 오류가 발생했습니다. C#

내가 가진 성공을 반환하려면 :

var data = new { success = false }; 

return Json(data, JsonRequestBehavior.AllowGet); 

내가 예외 또는 오류가있는 경우 반환하는 것을 알 필요가? 그것은 오류 기능을 제공하지

function DoMailPDF() { 
      $("#submitMail").attr("disabled", true); 
      var personid = $("#personid").val(); 
      var unitid = $("#unitid").val(); 
      var url = "@(Url.Action("SendEmail", "Report"))"; 
      $.ajax({ 
       url: url, 
       data: { person: personid , unit:unitid}, 
       success: function() {      
       // $('input[name=MailSent]').attr('checked', true); 
       $("#submitMail").removeAttr("disabled"); 
        alert("Email sent!"); 
       }, 
       error: function() {      
       alert("Email not sent!"); 
       } 
      }); 
     } 

:

내 쿼리입니다. 오류로 이동하려면 어떻게해야합니까? 모든 팁과 제안을 환영합니다.

+0

나는 얘기를 깜빡 했네요 그 성공은 진정한하거나 중요하지 않습니다 false 인 경우. 그것은 같은 성공 함수로 간다. – Tulips

+0

RESPONSE의 STATUS CODE가 200이 아닌 경우 error 메서드가 호출됩니다. 브라우저의 네트워크 탭을 확인하십시오. – frictionlesspulley

+0

AJAX 호출에서 성공/오류의 의미를 이해하지 못할 수 있습니다. "성공"은 서버가 HTTP 상태 코드 200을 반환하는 경우입니다. 서버가 200 이외의 응답을 반환하면 "오류"가 발생합니다. 설정 한 경우에도 상태가 200이면 .NET 코드가 항상 성공 이벤트를 트리거합니다 변수를 "false"로 설정하십시오. 응답을 확인하려면 "success"이벤트에 코드를 추가해야합니다. success : function (response) {if (response.success) {alert ('successful');} else {alert ('not successful');}} –

답변

2

Nick Bork이 이미 설명에서 설명했듯이 응답의 오류/성공 상태는 헤더에서 보낸 Http 상태 코드에 의해 결정됩니다. 여전히 제안 된 방법으로 가서 응답 객체와 success 속성을 검사 할 수 있지만 이미 강력하고 검증 된 메커니즘 (HTTP 프로토콜 자체)이 이미있는 경우에는 분명히 적절한 방법이 아닙니다. 모든 갈 때

.NET은 코드에 따라 HTTP 200 (OK)를 사용하지만 당신은 예를 들어,이 같은 리스폰스 객체에 액세스하여 컨트롤러에서이 동작을 변경할 수 있습니다 :

Response.StatusCode = 500; // or any of the other HTTP "failure" status codes 

모든 상태 코드 4xx 또는 5xx 범주에서 $.ajax(...) 호출에 지정된 error() 처리기가 트리거됩니다. 거기에서 물론 적절한 상태 코드, 응답 세부 정보 및 XHR 객체의 모든 속성을 검사하여보다 의미있는 사용자 경험을 제공 할 수 있습니다. 그들이 내 의견으로 주문 제작 솔루션 확실히보다 더 낫다 왜

HTTP 상태 코드가 꽤 많이 돌에서 설정 변경 가능성이 없습니다된다

, 그

PS는 ...입니다 : HTTP 상태 코드의 목록 wikipedia 님은 친구입니다.

5

당신은 서면으로하여 JSON 응답 개체에 액세스 할 수 있습니다

 $.ajax({ 
      url: url, 
      data: { person: personid , unit:unitid}, 
      dataType: 'json', 
      success: function (response) {      
       if (response.success == false) { 
        // Error handling 
       } else { 
        // Success handling 
       } 
      }, 
      error: function() {      
      alert("Email not sent!"); 
      } 
     }); 
관련 문제