programing

Ajax 사용 방법.성공 시 및 실패 시 양식 시작?

bestprogram 2023. 7. 31. 21:32

Ajax 사용 방법.성공 시 및 실패 시 양식 시작?

나는 이 Ajax를 사용합니다.양식 시작

    <% using( Ajax.BeginForm( "Create","Mandate",
                       new AjaxOptions( ) {
                           OnSuccess = "GoToMandates",
                           OnFailure = "ShowPopUpError"
                       } ) ) {%>

<% } %>

이 OnSucces 및 OnFailure를 탐지하려면 컨트롤러에 무엇을 기록해야 합니까?

OnSuccess 메시지를 표시해야 하기 때문입니다.

실패 시 다른 메시지를 표시해야 합니다.

내 컨트롤러에서

Public ActionResult GetSomething(FromCollection collection)
{
     if(exists == null)
     {
          //OnSuccess
     }
     else
     { 
         //OnFailure
     }
}

아무 소년이나 저를 도와주실 수 있나요?어떻게 이것을 잡을 수 있습니까?

감사해요.

OnSuccess 및 OnFailure는 Javascript 콜백 기능을 기대하는 것처럼 보입니다.

<script type="text/javascript">
    function handleError(ajaxContext) {
    var response = ajaxContext.get_response();
    var statusCode = response.get_statusCode();
    alert("Sorry, the request failed with status code " + statusCode);
    }
</script>

<%= Ajax.ActionLink("Click me", "MyAction",
new AjaxOptions { UpdateTargetId = "myElement", OnFailure = "handleError"}) %>

Pro ASP의 입니다.NET Framework 425페이지

ASP.NET Ajax 옵션 클래스


컨트롤러 추가 예

이를 위한 가장 간단한 방법은 제가 여기에 있는 것입니다. 하지만 저는 일종의 ViewModel을 사용하여 강력하게 입력된 mvc 뷰를 조사하고 아약스에 대해 jQuery를 사용하는 것을 검토하는 것을 추천합니다.그렇게 말씀하셨다면, 이것이 당신에게 효과가 있기를 바랍니다.

if (exists)
{
  ViewData["msg"] = "Some Success Message";
}
else
{
  ViewData["msg"] = "Some Error Message";
}

return View();

당신이 보기에

<div id="myResults" style="border: 2px dotted red; padding: .5em;">
    <%: ViewData["msg"]%>
</div>

저도 같은 답을 찾고 있었는데, 아약스 같아요.BeginForm() ...의 이벤트가 제대로 문서화되지 않았거나 성공 이벤트 및 실패 이벤트가 호출된 시기를 확인하기 위해 더 많은 자체 실험이 필요합니다.그러나 Ajax 옵션의 성공 및 실패 속성을 설정하는 데 어려움을 겪지 않을 수 있는 매우 쉽고 간단한 대안을 얻었습니다.대신 컨트롤러의 작업 메서드에서 ActionResult를 JavaScriptResult로 전송하여 onSuccess(), onFailure() javascript 메서드를 호출하기만 하면 됩니다.예를들면,

Public ActionResult Create(FromCollection collection)
{
     if(exists == null)
     {
          //OnSuccess
           return JavaScript("OnSuccess();");
     }
     else
     { 
         //OnFailure
         return JavaScript("OnFailure();");
     }
}

그리고 아약스.BeginForm 태그는 다음과 같아야 합니다.

 <%
  using( Ajax.BeginForm( "Create","Mandate", new AjaxOptions())) // see, no OnSuccess and OnFailure here.

{%>

<% } %>

이제 페이지에서 OnSuccess() 및 OnFailure() Javascript 메서드를 정의해야 합니다.

편집:

서버에서 예외가 발생하지 않으면 OnSuccess()가 기본적으로 호출될 것이라고 생각했습니다.서버에서 예외가 발생하면 OnFailure()가 호출됩니다.저는 아직 이 개념을 테스트하지 않았습니다.그렇다면 서버에서 JavaScript("OnSuccess();")와 JavaScript("OnFailure()(");")를 보내는 연습을 하는 것은 좋은 패턴이 아니기 때문입니다.

언급URL : https://stackoverflow.com/questions/5517813/how-to-use-ajax-beginform-onsuccess-and-onfailure-methods