通过iframe的外部POST表单

External POST form through iframe

本文关键字:POST 表单 外部 iframe 通过      更新时间:2023-09-26

我正在尝试获取一个页面,该页面包含一个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>

您正试图用以下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(带有伪造的src URL)

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

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

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

    1. ID()是什么?我看不出有什么作用。如果存在,它必须返回将存储在变量$the_ID中的值。您还必须在按钮标记之前调用该函数才能获得该变量
    2. 在JS中,您需要将所有内容都封装在$(document).ready(function() {}
    3. 您似乎正在尝试执行GET请求,而不是POST请求,因为您不是在正文中发送任何数据,而是在url中发送数据
    4. 第一个.click函数末尾缺少分号
    5. 我甚至没有看其他的点击功能,因为有一些重复和更奇怪的东西