2014-10-29 77 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