2012-03-19 5 views
2

메시지를 제출 한 AJAX를 통해 제출 한 메시지를 작성한 다음 succes 함수에서 멋진 작업을 수행합니다. 내 질문은 : slipeUp()가 완료된 후 페이지를 다시로드하려면 어떻게해야합니까? 중요하다면 창 콘텐츠의 가치는 id = "thread"인 iframe 내부입니다. 여기 내 코드가있다. slideUp() 이후 페이지를 다시로드 할 수 없다는 점을 제외하고는 모두 정상적으로 작동합니다. 어떤 도움을 주셔서 감사합니다!ajax POST 제출 후 iframe 새로 고침

$(function() { 
    $('.error').hide(); 
    $("#button").click(function() { 

    $('.error').hide(); 

     var subject = $("input#subject").val(); 

     if (subject == "") 
     { 
     $("label#subject_error").show(); 
     $("input#subject").focus(); 
     return false; 
     } 

     var message = $("textarea#message").val(); 

     if (message == "") 
     { 
     $("label#message_error").show(); 
     $("textarea#message").focus(); 
     return false; 
     } 

     var thread_id = {THREAD_ID}; 
     var sender_id = {SENDER_ID}; 

     var dataString = 'sender_id='+ sender_id + '&thread_id=' + thread_id + '&message=' + message + '&submit=' + true; 
     //alert (dataString);return false; 
     $.ajax(
     { 
      type: "POST", 
      url: "{U_NEW}", 
      data: dataString, 
      success: function() 
      { 
      $('.dialog').html("<div id='succes'></div>"); 
      $('#succes').html("<h2>{L_MESSAGE_SENT}</h2>") 
      .hide() 
      .fadeIn(800, function() 
       { 
       $('#succes') 
      }); 

      $('#succes').delay(1500).slideUp(500); 
      } 
     }); 
    }); 
}); 
+2

을 의미 http://stackoverflow.com/questions/4249809/reload-an-iframe-with- jquery – egis

답변

0

당신은

$('#succes').delay(1500).slideUp(500, function(){ location.reload();}); 
+0

대단히 감사합니다. Nicola. 이것은 TJ에 의해 게시 된 제안과 같은 동작을 수행하는 것 같습니다 ... – NFLineast

+0

업데이트, 완벽하게 작동합니다. 감사 :) – NFLineast

0

slideUp은 두 번째 매개 변수로 콜백 함수를 사용할 수 있습니다.

.slideUp([duration] [, callback]) 

그래서 당신이 이런 식으로 뭔가를 할 수 :

$('#succes').delay(1500).slideUp(500, function() { 
    //document.getElementById('thread').contentWindow.location.reload(); // reload iframe 
    var iframe = window.parent.document.getElementById('thread'); 
    iframe.src = iframe.src; 
}); 
+0

대단히 감사합니다! 그것은 페이지를 다시로드하지만 AJAX 게시물 제출, succes 메시지의 페이딩 및 슬라이딩 업을 포함하여 일어날 것으로 예상되는 모든 것을 무효화하는 것처럼 보입니다. 또한, 단지 "스레드"프레임 대신 페이지 전체를로드합니다. – NFLineast

+0

@NFLineast iframe 내용을 다시로드하기 위해 코드를 업데이트했습니다. iframe 소스가 동일한 도메인에있는 경우에만 작동합니다. –

+0

감사합니다. TJ. 기이하게도 여전히 "스레드"프레임 대신 전체 페이지를 다시로드해야합니다. 그리고 여전히 AJAX 제출을 수행하지 않습니다.이 작업을 생략하면됩니다. 어쩌면 내 코드의 흐름에 문제가있을 수 있습니다 ... 아, BTW, 예 iframe이 동일한 도메인에 있습니다. – NFLineast