2012-02-16 2 views
0

IE에 게시되지 않은 jquery 대화 상자 안에있는 양식에 문제가 있습니다.JQuery가 IE에서 실행되지 않는 양식 직렬화

Chrome 및 FF에서 작동하여 데이터를 내 MVC 컨트롤러로 보내지 만 IE에서 null 값을 보냅니다.

경고를 호출하여 serialize 결과를 표시함으로써 한 가지 방법으로 작동하도록 만들었습니다. 그러면 폼이 올바르게 serialize되고 서버에 값을 보냅니다.

$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>") 
        .addClass("dialog") 
        .attr("id", $(this).attr("data-dialog-id")) 
        .appendTo("body") 
        .dialog({ 
         width: 800, 
         position: [300, 50], 
         title: $(this).attr("data-dialog-title"), 
         close: function() { $(this).dialog('destroy').remove(); window.location.reload(true); }, 
         modal: true, 
         buttons: { 
          "Save": function() { 
           var formdata = $("#timeForm").serialize(); 
           $.post("/TimeTracker/AddTime", 
            $("#timeForm").serialize()); 
           alert(formdata); 
           $(this).dialog("close"); 
           $(this).dialog("destroy"); 
           window.location.reload(true); 
           return false; 
          }, 
          Cancel: function() { 
           $(this).dialog("close"); 
           $(this).dialog("destroy"); 
          } 
         } 
        }) 
       .load(this.href); 

경고를 제거하면 양식에 더 이상 값이 serialize되지 않습니다.

내 JQuery 스크립팅에서 오류가 있습니까? 또는 다른 것?

답변

2

대화 상자를 닫을 때마다 window.location.reload(true) 페이지를 다시로드하는 대화 상자의 이벤트 처리기가 close입니다.

그리고 버튼 저장시 폼을 게시하고 대화 상자를 닫은 다음 페이지를 다시로드하는 등 많은 작업을 수행하고 있습니다.

양식을 게시 한 후 실제로 페이지를 다시로드하려면 게시가 응답 할 때까지 기다리십시오. 성공 처리기 내에 코드를 작성할 수 있습니다. 또한 페이지를 다시로드하면 처리기가 닫히기 때문에 close 이벤트를 트리거하고 다시 페이지를 다시로드하는 $(this).dialog("close")을 호출 할 필요가 없습니다.

시도해보십시오.

  buttons: { 
         "Save": function() { 
          var formdata = $("#timeForm").serialize(); 
          $.post("/TimeTracker/AddTime", 
           formdata, function(){ 
           window.location.reload(true); 
          }); 
          //alert(formdata); 
          //$(this).dialog("close"); 
          //$(this).dialog("destroy"); 
          //window.location.reload(true); 
          return false; 
         }, 
         Cancel: function() { 
          $(this).dialog("close"); 
          $(this).dialog("destroy"); 
         } 
        } 
+0

이것은 효과가있는 것 같습니다. 거기에있는 모든 대화 상자가 이중 오류로 인해 또 다른 문제에서 종료되었습니다. – frostie

관련 문제