2014-10-29 48 views
0

我想要获取包含POST表单的页面,以便在用户能够确认操作(如删除列表)时加载到iframe中。我已经成功地将JS和表单页面加载到iframe中,但是当我单击表单内的一个操作时,它不会更新列表。相反,它只是刷新页面。通过iframe的外部POST表单

表单工作正常,因为如果我尝试在浏览器中手动访问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> 

回答

1

您试图在类来代替HTML更奇怪的东西“弹出“以下的js代码..

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)

+0

谢谢!这是完全合理的。 现在,我需要弄清楚为什么src没有使用上面的脚本进行设置。可能与在该页面上的每个项目旁边具有与class =“myclass”相同的按钮有关,并且iframe不知道要设置哪个src URL。 也许需要在某处添加getelementbyid? – Duetschpire 2014-10-29 06:09:45

+0

我不认为拥有与class =“myclass”相同的按钮将会成为问题。由于点击功能使用$(this)来获取content-url,它总是获取您单击的按钮的内容url ... – 2014-10-29 06:30:15

+0

用我目前拥有的内容更新了代码 – Duetschpire 2014-10-29 06:35:28

0

首先更正以下错误,然后看如果有效:

  1. 你的右括号后失踪分号
  2. 您关闭PHP标签,并且继续用URL之后再添加其他结束PHP标签
  3. 你所寻找的是这个你的内容的URL内:

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

  4. 什么是the_ID()?我没有看到这个功能。如果存在,它必须返回您将存储在变量$ the_ID中的值。您还必须在按钮标签前调用该函数才能获得该变量。
  5. 在你的JS,你需要在$(document).ready(function() {}
  6. 好像你正在尝试做的GET请求,因为你没有
  7. 缺少分号在体内,但在URL发送任何数据不POST请求包一切第一。点击功能的结束
  8. 我甚至没有看所有其他功能。点击导致有一些重复的事情和
+0

功能工作正常。 'the_ID()' 工作正常,因为它抓住了它之前在函数中设置的查询。重复的JS是一个错误,因为我正在测试其他东西,忘记删除它。 非常感谢您的回应! – Duetschpire 2014-10-29 06:12:13