通过iframe的外部POST表单

时间:2014-10-29 03:41:21

标签: javascript php ajax iframe

我试图获取一个包含POST表单的页面,以便在iframe中加载,以便用户能够确认删除列表等操作。我已经成功地将JS和表单页面加载到iframe中,但是当我单击表单内的操作时,它没有更新列表。相反,它只是刷新页面。

表单工作正常,因为如果我尝试在浏览器中手动访问content-url并更新表单,它就可以正常工作。

如何才能刷新iframe内容而不是父页面并在iframe中加载响应?我到底做错了什么?

任何帮助表示赞赏!!

这是我的代码:

HTML:

<button class="myclass" content-url="<?php bloginfo('siteurl') ?>/?a_action=delete_auction&pid=<?php the_ID(); ?>">Delete Me</button>
               <div class="popup"><iframe id="mynewiframeid" name="myframename" src=""></iframe></div>

JS:

  $(document).ready(function() {      
  $(document).click(function(e) {
      if ($(".popup").is(":visible")) {
        $(".popup").fadeOut("fast")
      }
  });

 $(".myclass").click(function() {
      if (!$(".popup").is(":visible")) {
        $('#mynewiframeid').attr('src',$(this).attr('content-url'));
        $(".popup").fadeIn("slow");
      }
      return false;
  });

  $(".popup").click(function(e) {
      e.stopPropagation()
  })
 });

形式:

  <div class="popup_content"> 
            <h3> You are about to delete <b><?php echo $title; ?></b>!</h3>
            <?php
            if(isset($_POST['yes_confirm']))
            {
                $s = "update ".$wpdb->prefix."posts set post_status='trash' where id='$pid'";
                $wpdb->query($s);
                echo '<div class="deleted_item_ok">';
                printf(__('Your item has been deleted successfully!'));
                echo '</div>';
            }
            else
            {
    ?>
            <form method="post">
            <div class="are_you_sure_delete">
            <?php
            _e('Are you sure you want to delete this item?');
            ?>
            </div>
 <button class="button-small button-w-green" type="submit" id="submits" name="yes_confirm">Yes, Delete</button>
 <button class="button-small button-w-red" type="submit" id="submits" name="no_confirm">No!</button>
            </form>
            <?php } ?>
            </div>

2 个答案:

答案 0 :(得分:1)

您正尝试使用以下js代码替换类“popup”中的html ..

HTML => <div class="popup"><iframe id="iframeid" src=""></iframe></div>
JS => $('.popup').html(response);

这将使用响应替换上面HTML中的iframe元素。因此,在回复之后,页面内没有iframe ..

如果您确实想使用iframe,我认为您不必处理AJAX。而只需更改iframe的src。您可以使用以下js代码..

$(document).ready(function() {      
      $(document).click(function(e) {
          if ($(".popup").is(":visible")) {
            $(".popup").fadeOut("fast")
          }
      });

     $(".myclass").click(function() {
          if (!$(".popup").is(":visible")) {
            $('#iframeid').attr('src',$(this).attr('content-url'));
            $(".popup").fadeIn("slow");
          }
          return false;
      });

      $(".popup").click(function(e) {
          e.stopPropagation()
      })
  });

Fiddle (with fake src urls)

答案 1 :(得分:0)

首先,纠正以下错误,然后查看它是否有效:

  1. 在您关闭括号后缺少分号
  2. 你关闭php标签,然后你继续使用url,然后你添加另一个关闭的php标签
  3. 您正在寻找的内容是您的内容 - 网址:

    <?php bloginfo('siteurl') . '/?a_action=delete_auction&pid=' . $the_ID; ?>

    1. 什么是the_ID()?我没看到那个功能。如果存在,它必须返回您将存储在变量$ the_ID中的值。您还必须在按钮标记之前调用该函数以获取该变量。
    2. 在你的JS中,你需要将所有内容都包装在$(document).ready(function() {}
    3. 您似乎正在尝试执行GET请求而不是POST请求,因为您没有在正文中发送任何数据但是在网址中
    4. 在第一个.click函数结束时缺少分号
    5. 我甚至没有看到所有其他.click功能导致重复发生并且有更多奇怪的东西