由ajax调用的Gravity Forms将表单字段显示为已禁用

时间:2014-06-16 05:30:27

标签: wordpress gravity-forms-plugin

当我使用ajax在我的主题函数.php中调用Gravity Form时,表单字段被禁用。 任何解决方案都会对我有所帮助。

add_action('wp_head', 'mytheme_fn');
add_action('wp_ajax_mythem_load_gravityform', 'mythem_load_gravityform_call');
 function mytheme_fn(){
?>
<script>
    jQuery(document).ready(function () {
        var data = {
            action: 'mythem_load_gravityform'
        };

        jQuery.post(
                ajaxurl,
                data
            ).success(function (data) {
                jQuery('.gformholder').html(data);

            });

    });
</script> <?php }
function mythem_load_gravityform_call(){
    gravity_form(1, false, false, false, null,false);
  exit;
}

提前谢谢。

2 个答案:

答案 0 :(得分:1)

来自Gravity Forms支持专家:

  

“问题是由GF执行表单呈现逻辑引起的。他们检查is_admin()是否返回true(当你在Wordpress上调用ajax时它会这样做),如果是这样,它们会像你在管理员中一样呈现它。”

我们在Gravity Forms 1.9中进行了一些更改,因此在加载表单和字段时不再执行is_admin检查,这意味着现在可以通过AJAX加载表单和字段,它们将正确呈现。

Gravity Forms 1.9刚刚发布:http://www.gravityhelp.com/gravity-forms-v1-9-released/

关于增强的ui,它由selected.js脚本提供支持,当您对基础select元素进行更改时,您需要触发所选接口的更新:http://harvesthq.github.io/chosen/options.html#triggerable-events

答案 1 :(得分:0)

问题是由GF实现表单呈现逻辑引起的。他们检查is_admin()是否返回true(当你在Wordpress上调用ajax时它会这样做),如果是这样,他们会像你在管理员那样呈现它。

我可以在这里想到两个解决方案:

1)虚拟端点 使用没有头部或脚部的模板文件创建一个虚拟页面,只是一个简单的gravity_form(...); 然后从你的js中调用这个url。

2)插件 创建一个插件,它注册自定义查询var(使用query_vars过滤器),然后通过显示gravity_form(...)输出来处理查询变量。