2013-04-25 2 views
2

컨트롤러에서보기의 작업을 수행하고 결과를 반환하고 싶습니다. 그러나 나는 항상 "요청 실패"를 얻고 컨트롤러의 액션 코드는 실행됩니다. 내가보기에이를 사용하는 것을 시도하고있다 :Ajax-mvc 요청은 항상 실패합니다.

$("#State").change(function() { 
     if ($(this).val() != "Va") { 
      $.ajax({ 
       url: '@Url.Action("ProcessOrder","Checkout")', 
       type: 'POST', 
       success: function(result) { 
        if(result.success) { 
         alert("good " + result);  
        } else { 
         alert("bad " + result); 
        } 
       }, 
       error: function() { 
        alert("request failed"); 
       } 
      }); 

     } else { 
      formSwitcher($(this).val()); 
     } 

    }); 

그리고이 컨트롤러에서 : 내가 잘못 뭐하는 거지

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ProcessOrder() 
    { 
     string sURL = @"https://someUrl/?OrderId=" + Id ; 
     var badUrl = string.Empty; 
      try 
      { 
       Response.Redirect(sURL, true); 
       HttpWebRequest request = null; 
       HttpWebResponse httpWebResponse = null; 
       request = HttpWebRequest.Create(sURL) as HttpWebRequest; 
       request.Method = "GET"; // Supports POST too 
       httpWebResponse = (HttpWebResponse)request.GetResponse(); 
       return Json(new { success = true }); 
      } 
      catch (Exception ex) 
      { 
       badUrl = "~/Shared/error.aspx"; 
      } 
      return Json(new { success = false, error = badUrl }); 
    } 

?

+1

먼저 try catch 내에서 절대 돌아 오지 않거나 리디렉션하지 마십시오. 리디렉션하면 오류가 발생합니다. –

+0

컨트롤러로가는 아약스 통화입니까? – Nighil

+0

예 - 요청 실패에 대한 경고가 표시되면 컨트롤러 코드가 실행됩니다 – user1069733

답변

1

그래서 문제는 Response.Redirect (sURL, true)입니다. try catch에 걸리기 전에 아약스에 의해 잡힌 예외를 던지고있었습니다. 결과는 아약스가 실패했다고 말했고 코드는 계속 실행되었습니다.

관련 문제