2017-09-10 2 views
-1

사용자가 로그인했는지 확인하는 asp.net 웹 API가 있습니다. 디버그 할 때 API 컨트롤러에서 200 OK 응답을 받지만 나는 200 명의 응급 응답을받는 바이올린을 검사합니다. 하나는 객체가 없으면 비어 있으며, 다른 응답은 객체에 대한 응답을 포함합니다.ASP.NET 웹 API가 200을 반환하지 않습니다. 응답을 ajax에서 내 응답으로

컨트롤러 코드 내가 아약스 호출의 오류 섹션에 반환 된 응답을받을 아약스에서 성공 응답을 얻을 생각하고 또한

[HttpPost] 
    [Route("api/BTS_Admin/Login")] 
    public HttpResponseMessage AdminLogin(Admin admin) 
    { 
     Admin response = admin.LoginCheck(); 
     if (response != null) 
     { 
      return Request.CreateResponse(HttpStatusCode.OK, response); 
     } 
     else 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Login Failed"); 
     } 
    } 

Ajax 호출 코드

   $('#btnLogin').click(function() { 
       $.ajax({ 
       url: 'http://localhost:61468/api/BTS_Admin/Login', 
       method: 'POST', 
       dataType: JSON, 
       contentType: 'application/json', 
       data: JSON.stringify({ 
        Email: $('#txtUsername').val(), 
        Password: $('#txtPassword').val(), 
       }), 
       success: function (response) { 
        //localStorage.setItem('accessToken', response.access_token); 
        //localStorage.setItem('userName', response.userName); 
        window.location.href = "Data.html"; 

       }, 
       error: function (jqXHR) { 
        $('#divErrorText').text(jqXHR.responseText); 
        $('#divError').show('fade'); 

       } 

      }); 

참고 : 여기가 응답입니다.

    error: function (jqXHR) { 
        $('#divErrorText').text(jqXHR.responseText); 
        $('#divError').show('fade'); 
+0

대신 어떤 응답을 얻습니까? 코드를 디버그하고 서버 코드가 제대로 작동하는지 확인 했습니까? –

+0

피들러에서 서버 코드를 검사했을 때 서버 코드가 200 Ok 상태로 돌아갑니다. 그러나 나는 두 사람의 반응을 피들러하게하고있다. 하나는 200 OK 응답이고 다른 하나는 개체가없는 200 Ok 응답입니다. – Izuagbala

+0

'btnLogin'은 정상적인 버튼입니까, 아니면 제출 버튼입니까? –

답변

0
[HttpPost] 
[Route("api/BTS_Admin/Login")] 
public HttpResponseMessage AdminLogin(Admin admin) 
{ 
    Admin response = admin.LoginCheck(); 
    if (response != null) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response); 
    } 
    else 
    { 
     //ajax get error from here, because you set 404 error (Not found.) 
     return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Login Failed"); 
    } 
} 

이 시도 :

[HttpPost] 
[Route("api/BTS_Admin/Login")] 
public IHttpActionResult AdminLogin(Admin admin) 
{ 
    Admin response = admin.LoginCheck(); 
    return Ok(response); 
} 

그리고 아약스 요청 확인에

반환 값 :

당신이 컨트롤러 설정 응답 상태 코드가 아닙니다 200 OK에서, 아약스이이을이라고 생각
  $('#btnLogin').click(function() { 
      $.ajax({ 
      url: 'http://localhost:61468/api/BTS_Admin/Login', 
      method: 'POST', 
      dataType: JSON, 
      contentType: 'application/json', 
      data: JSON.stringify({ 
       Email: $('#txtUsername').val(), 
       Password: $('#txtPassword').val(), 
      }), 
      success: function (response) { 
       if(response){ 
       //Do somethig 
        window.location.href = "Data.html"; 
       }else{ 
        $('#divErrorText').text(jqXHR.responseText); 
        $('#divError').show('fade');    
       } 
      }, 
      error: function (jqXHR) { 
       alert('Error'); 
      } 
     }); 

오류가 발생하여 오류 콜백이 발생합니다.

+0

해결책을 시도했지만 여전히 동일한 오류가 발생했습니다. – Izuagbala

+0

감사합니다. data-Type을 JSON에서 'json'으로 변경했습니다. – Izuagbala

+0

dataType : json, text .. 서버에서 데이터를 반환하는 평균 유형입니다. –

관련 문제