2011-09-14 38 views
0

有一個頁面模板,名爲post-plain-body,它打印傳遞的帖子的標題和正文。名爲AjaxLoader的頁面使用此模板。例如,如果我將/ajaxloader作爲id作爲$_POST['id']的值,則會顯示該帖子的內容。Ajaxed加載的內容不會像應該那樣運行

這是通過主頁上的jQuery調用。它實際上將帖子/頁面的內容加載到特定的上下文中。

我加載的頁面之一包含一個Contact Form 7窗體。表單會顯示出來,但是當我提交時,它會轉到/ajaxloader/#wpcf7-f2-p34-o1而不是使用Ajax來驗證表單。

這是頁面模板。

<?php 
/* 
Template Name: Ajax Loader 
*/ 

// Load contact form 7 scripts 
if (function_exists('wpcf7_enqueue_scripts')) { 
    wpcf7_enqueue_scripts(); 
    wpcf7_enqueue_styles(); 
} 

// Gets the content only from a post. Used in ajax loading 
if(isset($_POST['id'])): 
    $post = get_post($_POST['id']); 
    if ($post) : setup_postdata($post); 
     ?> 
     <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> 
      <h2><?php the_title(); ?></h2> 
      <?php the_content(); ?> 
     </div><?php 
    endif; 
else:?> 
    <h2>Page not found</h2><?php 
endif; 
?> 

而jQuery的是加載內容如下

function load_page(pid) { 
    $("#page_preview").load("ajaxloader/", {id:pid},function(){ 
     $('#page_preview').fadeIn(300); 
     $('#page_loading').hide(); 
    }); 
} 

編輯

<form>沒有連接到聯繫表7個腳本,因爲它應該。我發現這個在firebug中使用javascript調試。通常,它應該有兩個處理程序連接到clicksubmit事件。任何建議,爲什麼它不附加?

回答

0

看起來像contact-form-7在提交時調用load_page()函數。您可能想要檢查如何定義調用load_page()的事件處理程序。

也可能是contact form 7使用同名的函數load_page()並導致一些衝突。

你應該給我們在jsfiddle上加權的版本。

+0

它已被證實後,形式submited。當我提交它時,它會在沒有驗證的情況下加載'/ ajaxloader'。雖然問題在於它進入了另一個頁面,但找到它不驗證的原因更爲重要。我正在考慮jQuery衝突。 – Odys

+0

@Oys - 好的...嘗試使用斷點和螢火蟲來逐步執行js來查找問題,如果您無法在jsfiddle上給我們提供源代碼。 – mmhan

0

我找到了解決方案。對某人來說似乎微不足道,但無論如何,我認爲我應該分享。使用Ajax

,您使用只加載內容的頁面模板(沒有標題,工具條等),請執行下列操作:

  1. 添加wp_head();
  2. 添加的頁面模板(如在上面的問題)
  3. 添加wp_footer();的底部

如果有人對程序的詳細信息,請貢獻:)

0

調用此上AjaxComplete:

var ajaxContainer = $('#somediv_id'), 
    newCF7 = $('.wpcf7 > form', ajaxContainer); 
    newCF7.attr('action', "#" + newCF7.attr('id')); 
    wpcf7.initForm(newCF7); 
相關問題