【问题标题】:Refreshing an iframe after ajax POST submitajax POST提交后刷新iframe
【发布时间】:2012-04-03 21:49:26
【问题描述】:

我通过 AJAX 提交了一条消息,它提交了一条消息,然后在 succes 函数中执行了一些漂亮的操作。我的问题是:slipeUp() 完成后如何让页面重新加载?值得一提的是,窗口内容位于 id="thread" 的 iframe 中,如果这很重要的话。这是我的代码。除了在slideUp()之后我无法重新加载页面外,所有工作都很好。任何帮助表示赞赏!

  $(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);
            }
        });
  });
});

【问题讨论】:

标签: jquery iframe reload


【解决方案1】:

你是说

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

【讨论】:

  • 非常感谢,尼古拉。这似乎与 TJ 发布的建议执行相同的操作...
【解决方案2】:

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;
});

【讨论】:

  • 非常感谢您的回复!它确实重新加载了页面,但它似乎否定了应该发生的所有其他事情,包括 AJAX 发布提交、成功消息的淡入和向上滑动位。此外,它会加载整个页面,而不仅仅是“线程”框架......
  • @NFLineast 我更新了我的代码以重新加载 iframe 内容。这仅在 iframe 源位于同一域中时才有效。
  • 谢谢 TJ。奇怪的是,它仍然坚持重新加载整个页面,而不仅仅是“线程”框架。而且它仍然不执行 AJAX 提交,如果我忽略它,它会执行。也许我的代码流动方式有问题......哦,顺便说一句,是的 iframe 在同一个域上。
  • @NFLineast: ajax 是在 iframe 中提交还是在包含 iframe 的页面中提交?
  • 它在 iframe 中。包含 iframe 的页面中还有另一个(不同的)AJAX 提交,如果这是一个问题?
猜你喜欢
  • 2020-02-06
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多