2012-03-19 101 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 2012-03-19 11:57:08

回答

0

你的意思是

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

非常感謝,Nicola。這似乎與TJ發佈的建議執行的操作相同... – NFLineast 2012-03-19 12:27:00

+0

更新,完美工作。謝謝 :) – NFLineast 2012-03-19 15:06:15

0

效果基本show可以採取一個回調函數作爲第二個參數。

.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提交後,成功消息淡入淡出和滑動位。此外,它加載整個頁面,而不是隻是「線程」框架.... – NFLineast 2012-03-19 12:16:31

+0

@NFLineast我已更新我的代碼以重新加載iframe內容。這隻會在iframe源位於同一個域時起作用。 – 2012-03-19 12:32:20

+0

謝謝TJ。奇怪的是,它仍然堅持重新加載整個頁面而不是「線程」框架。它仍然不會執行AJAX提交,如果我不提供它,它會執行此操作。也許我的代碼流如何出錯......哦,順便說一句,iframe是在同一個域中。 – NFLineast 2012-03-19 12:37:25