0

有一个名为的页面模板post-plain-body,用于打印所传递帖子的标题和正文。命名的页面AjaxLoader使用此模板。例如,如果我将/ajaxloaderwithid作为$_POST['id']值调用,则将显示该帖子的内容。

这是通过主页上的 jQuery 调用的。它实际上将帖子/页面的内容加载到特定的上下文中。

我加载的一个页面包含一个Contact Form 7表单。表单已显示,但当我提交它时,它会转到 a/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>未按应有的方式附加到 Contact Form 7 脚本。我在firebug中使用javascript调试发现了这一点。通常,它应该有两个附加到事件的处理click程序submit。任何建议为什么它没有附加?

4

3 回答 3

0

我找到了解决方案。对某人来说可能看起来微不足道,但无论如何我认为我应该分享。

在使用 Ajax 仅用于加载内容(无标题、侧边栏等)的页面模板上,执行以下操作:

  1. 添加wp_head();
  2. 添加页面模板(如上面的问题)
  3. 添加wp_footer();到底部

如果有人对程序有更多信息,请贡献:)

于 2011-09-14T09:36:55.377 回答
0

看起来是在提交时contact-form-7调用函数。load_page()您可能想检查您是如何定义正在调用的事件处理程序的load_page()

也可能是contact form 7使用了同名的函数load_page()并导致一些冲突。

您应该在 jsfiddle 上给我们加权版本。

于 2011-09-14T08:35:14.337 回答
0

在 AjaxComplete 上调用它:

var ajaxContainer = $('#somediv_id'),
    newCF7 = $('.wpcf7 > form', ajaxContainer);
    newCF7.attr('action', "#" + newCF7.attr('id'));
    wpcf7.initForm( newCF7 );
于 2017-10-30T09:20:43.750 回答