2016-07-17 3 views
0

컨트롤러에 ActionResault를 호출하는 웹 양식에 Ajax가 있습니다. 응답 상태 코드를 200으로 설정하더라도 문제가 있습니다. , ...) 아약스에서 오류가 여기 내 Ajax와 컨트롤러가있을 실 거예요 그래서 Ajax는 200 응답을 얻을 것이다 :Web Form 응답 상태 코드 컨트롤러가있는 아약스의 경우 항상 200입니다.

$.ajax({ 

      beforeSend: function (jqXHR, settings) { 
       xhr = jqXHR; // To get the ajax XmlHttpRequest 
      }, 
      url: url + "Accounts/Login", 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      data: JSON.stringify(loginDataModel), 

      success: function (result) { 
       alert(result); 
       if (result==0) { 
        document.location.href = '/Controlpanel/DashBoard.aspx'; 
       } 

      }, error: function (jqXHR, exception) { 

       var msg = ''; 

       if (jqXHR.status === 0) { 
        msg = 'عدم اتصال به اینترنت'; 
       } else if (jqXHR.status == 401) { 
        msg = 'اطلاعات وارد شده صحیح نمی باشد'; 
       } else if (jqXHR.status == 500) { 
        msg = 'خطایی در هنگام پردازش درخواست شما رخ داد.'; 
       } else if (exception === 'parsererror') { 
        msg = 'Requested JSON parse failed.'; 
       } else if (exception === 'timeout') { 
        msg = 'درخواست شما در بازه زمانی مورد نظر پردازش نشد'; 
       } else if (exception === 'abort') { 
        msg = 'Ajax request aborted.'; 
       } else { 
        msg = $.parseJSON(jqXHR.responseText).ErrorMessage; 
       } 
       $(".message").text(msg); 

      }, 

     }) 

그리고 어떤 도움이 될 것이 내 ActionResault

public HttpStatusCodeResult Login(LoginBindingProcessModel loginDataModel) 
    { 
     if (userRole != null) 
     { 
      HttpContext.GetOwinContext().Authentication.SignIn(new Microsoft.Owin.Security.AuthenticationProperties { IsPersistent = loginDataModel.isPersistent }, userRole); 
     } 
     if (objUserVerification == UserVerificationResult.SuccessfullyVerified) 
     { 
      Response.StatusCode = (int)System.Net.HttpStatusCode.OK; 
      return Json(objUserVerification); 
     } 
     else 
     { 
      Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized; 
      return Json(objUserVerification); 
     } 
    } 

입니다 감사합니다.

+0

'HttpStatusCodeResult'와'JsonResult'는 할당 가능하지 않고 암시 적으로 하나를 다른 것으로 변환 할 수 없기 때문에 액션 결과 코드를 컴파일해서는 안됩니다. – Nkosi

+0

@ Nkosi 귀하의 도움에 감사드립니다 .so 당신은 내가 반환하는 행동의 유형을 반환하도록 제안합니까? – nader

+0

나는 아무것도 제안하지 않았다. 나는 당신이 현재 가지고있는 것이 당신이 묘사 한 행동을 얻기 위해 컴파일해서는 안된다는 것을 말하고있었습니다. 액션의 반환 유형을 'ActionResult'를 시작으로 가장 낮은 공통 유형으로 변경 한 다음 설명 된 동작을 얻는 이유를 조사 할 수 있습니다. – Nkosi

답변

0

문제가 401에 발생했습니다. owin은 승인되지 않은 상태 코드에서 페이지를 기본 주소로 리디렉션하기 때문입니다.