2011-09-14 10 views
0

渡された投稿のタイトルと本文を印刷するpost-plain-bodyというページテンプレートがあります。 AjaxLoaderという名前のページがこのテンプレートを使用します。例えば/ajaxloaderidとを$_POST['id']の値と呼ぶと、その投稿の内容が表示されます。Ajaxed loadedコンテンツが正常に動作しない

これは、メインページでjQuery経由で呼び出されます。実際にはポスト/ページの内容を特定のコンテキストにロードします。

ロードするページの1つに、Contact Form 7フォームが含まれています。フォームが表示されますが、フォームを検証するためにAjaxを使用するのではなく、提出すると/ajaxloader/#wpcf7-f2-p34-o1になります。

これはページテンプレートです。コンテンツをロードしている

<?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は<form>は7つのスクリプトそれが必要として、お問い合わせフォームに添付されていない

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

次EDIT

です。私は、firebugでjavascriptデバッグを使ってこれを見つけました。通常、それはclicksubmitイベントに2つのハンドラを付けるべきです。それが添付されていない理由は何ですか?

答えて

0

contact-form-7は、送信時にload_page()機能が呼び出されているようです。 load_page()を呼び出すイベントハンドラをどのように定義したかを確認することができます。

contact form 7は、同じ名前load_page()の機能を使用していて、いくつかの競合が発生する可能性があります。

jsfiddleで重み付けされたバージョンを教えてください。

+0

フォームがsubmitedされます。私がそれを提出すると、検証なしで '/ ajaxloader'をロードします。問題は別のページに移動することですが、検証しない理由を見つけることが重要です。私はjqueryの競合を考えています。 – Odys

+0

@Odys - よく... jsfiddleでソースを与えることができない場合は、ブレークポイントとFirebugを使用してjsの段階的実行を見て問題を見つけてください。 – mmhan

0

解決策が見つかりました。誰かには分かりにくいかもしれませんが、とにかく分かち合うべきだと思いました。アヤックスを使用して、あなたがコンテンツのみ(ヘッダー、サイドバーなど)をロードするために使用するページテンプレートで

、次の手順を実行します。

  1. wp_head();
  2. (上記の質問のように)ページテンプレートを追加を追加
  3. 誰かが手順の詳細情報を持っている場合は、投稿してください:)

    を下

wp_footer();を追加AjaxComplete上

0

コールこの:それは検証された後

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