2012-03-19 72 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