2009-05-12 3 views
4

예, 아니오 버튼이있는 JQuery 확인 팝업이 있습니다. 예 버튼 호출이 기능 :컨트롤러에서 JQuery 호출 액션 (그러나 리디렉션하지 않음)

function doStuff() { 
      $('#confirmPopup').dialog("close"); 
      var someKey = $("#someKey")[0].value; 
      $.post("/MYController/MyAction", { someKey : someKey }, 
      function(responseText, textStatus, XMLHttpRequest) { 

      }); 
      return false; 
     } 

이 성공적으로 내 컨트롤러 액션을 호출 (2 개 개의 다른 시도) : 다른 행동 조치가 실행됩니다 두 경우 모두

public ActionResult MyAction(int someKey) 
{ 
    //do stuff 
    return RedirectToAction("OtherAct", "OtherCont"); 
} 



public JavaScriptResult MyAction(int someKey) 
    { 
     //do stuff 
     return JavaScript("Window.location.href='OtherCont/OtherAct';"); 
    } 

하지만, 다시 직접 수행 생기지 마라. 왜?

답변

0

웹 서비스 리디렉션 호출에서 이러한 방식으로 작동하지 않는 문제가 발생했습니다.

또 다른 방법은 (= .... Window.location.href를)

또는 단지 HTML을 사용하면 다음 클라이언트로 다시 리디렉션을 수행하는 자바 스크립트를 사용하여 리디렉션 할 URL을 보낼 수 있습니다 웹 서비스 호출 대신 제출하십시오.

3

비동기 적으로 호출 된 작업 ($ .post)에서 리디렉션 할 수 없기 때문에. 대안으로 here을보십시오.

0

아약스를 사용하고 있기 때문에 액션에서 리디렉션이 무시됩니다.

리디렉션을 호출하는 솔루션은 일반 FORM POST 및 아약스가 아닌 다른 도우미를 만드는 것일 수 있습니다. 전체 페이지가 POST되고 작업이 리디렉션됩니다. 위의

 string deleteLink = String.Format(@"<a onclick=""deleteRecord({0})"" href='#'>Delete</a><form id='deleteForm' method='post' action='" + 
      routeRelativePath + "/" + actionPrefix + "Delete/" + model.ID + 
      @"'></form>", model.ID); 
... more :

여기 정확히 않는 내 도우미의 일부입니다.

1

OtherContController의 OtherAct ... [AcceptVerbs (HttpVerbs.Post)]로 장식되어 있습니까?

그렇다면 문제가 있습니다. JavaScriptResult를 반환하는 동작이 효과적입니다. 그러나 액션이 HttpVerbs.Post로 꾸며져 있다면 Ajax 호출이 404를 찾을 수 없다는 Get 액션이 없다.. 물론 비동기식으로 발생하기 때문에이를 알 수있는 방법이 없습니다. 오류 메시지가 표시되지 않습니다.

두 번째 문제는 더 쉽습니다. 당신은했다 ... 당신이 의미하는 것은이었다

return JavaScript("Window.location.href='OtherCont/OtherAct';") 

...

return JavaScript("window.location.href='OtherCont/OtherAct';") 

... 이상 제대로 ...

return JavaScript("window.location.href='" + 
     Url.Action("OtherAct", "OtherCont") + "';"); 

당신을 얻을해야 그곳에.

관련 문제