2013-05-02 4 views
0

ASP.NET MVC 3 애플리케이션에서 작업 중이며 Ok 버튼으로 jquery 대화 상자가 있습니다. 확인을 클릭하면 jQuery AJAX를 사용하여 양식을 제출하고 싶습니다.jquery ajax를 사용하여 asp.net MVC 3 양식 제출

내 아약스 호출은 다음과 같습니다

$("#free-trial").dialog({ 
    autoOpen: false, 
    autoResize: true, 
    buttons: { 
     "OK": function() { 
      if (notvalid()) { 
       $(".ui-dialog-titlebar").hide(); 
       $("#dialog-freetrial-insufficientdata").dialog({ dialogClass: 'transparent' }); 
       $("#dialog-freetrial-insufficientdata").dialog("open"); 
      } 
      else { 
       $('#frmCreateTrialAccount').live('submit', function (e) { 
        e.preventDefault(); 
        $.ajax({ 
         cache: false, 
         async: true, 
         type: "POST", 
         url: $(this).attr('action'), 
         data: $(this).serialize(), 
         success: function (data) { 
          alert(data); 
         } 
        }); 
       }); 
       jQuery(this).dialog('close'); 
      } 
     } 
    }, 
    open: function() { 
     $('.ui-dialog-buttonset').find('button:contains("OK")').focus(); 
     $('.ui-dialog-buttonset').find('button:contains("OK")').addClass('customokbutton'); 
    } 

});

경우 형식은 다음과 같습니다과 같이

@using (Html.BeginForm("CreateTrialAccount", "Home", FormMethod.Post, 
       new { Id = "frmCreateTrialAccount" })) 
{ 

} 

및 컨트롤러 액션은 다음과 같습니다

[HttpPost] 
public JsonResult CreateTrialAccount(FormCollection form) { 
    return Json("dummy data"); 
} 

을하지만 양식이 방법에 제출되지 않습니다.

나는 레이아웃 페이지에 포함 된이 파일이 있습니다

<link href="@Url.Content("~/Content/css/smoothness/jquery-ui-1.10.0.custom.css")" rel="stylesheet" type="text/css" media="screen"/> 
<script src="@Url.Content("~/Scripts/jquery-1.9.1.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-ui-1.10.2.custom.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

이 나에게 솔루션을 제안 해주십시오.

+0

봐이 괜찮습니다. 제출 이벤트가 발생했는지 확인 했습니까? –

+0

네, 시도해보십시오. 경고창이 표시됩니다. – DotnetSparrow

답변

3

오, 죄송합니다. 제가 작성한 귀하의 문제는 귀하가 이미 제출 했어야하는 양식의 제출 조치를 구속하고 있다는 것입니다. 양식 제출을 바인드하려면 $("#free-trial").dialog({ 외부에 선언하십시오. 그런 다음 바인딩 코드와 $("#free-trial").dialog({에서 모두 호출 할 수 있도록 별도의 함수에서 ajax post 메서드를 사용할 수 있습니다.

var form = $('#frmCreateTrialAccount'); 
$.ajax({ 
    cache: false, 
    async: true, 
    type: "POST", 
    url: form.attr('action'), 
    data: form.serialize(), 
    success: function (data) { 
     alert(data); 
    } 
}); 

그래서 그냥 분명히 코드의 다음 줄을 제거 만들려면 : 모든 같은

$('#frmCreateTrialAccount').live('submit', function (e) { 
e.preventDefault(); 
// and the ending 
}); 
+0

안녕하십니까. 답변을 주셔서 감사합니다. 그걸 제거하면 다음과 같은 경고 메시지가 나타납니다 : "$ ('# frmCreateTrialAccount')의 경고 또는 console.log를 실행하십시오. 팝업은 페이지의 모든 html이있는 확인 버튼을 클릭하면 열립니다. 확인 버튼은 양식 안에 없습니다. jquery ui 대화 상자 Ok 버튼이며 양식은 jquery 사용자 대화 상자에 있습니다. – DotnetSparrow

+0

예 'OK' 버튼이 있습니다. 내가 이해할 수없는 것은 왜 "모든 html 페이지"가 ​​나타날 것인가하는 것입니다 .Ajax 포스트는'if (notvalid())'가 참이 아니면 발생합니다. 그냥 적어도 지금은 결과를 경고합니다. 당신이 코드에 표시되지 않은 게시물의 결과를 쓰지 않는 한 .btw를 시도 했습니까? –

+0

안녕하세요, Von : 나는 아무것도 쓰지 않을 것입니다. 그냥 질문과 성공 방법에 게시 된 json 반환 그것 – DotnetSparrow

관련 문제