wordpress / php - Ajax / Jquery发送重力表单输入字段/下拉到另一页面

时间:2017-11-01 17:34:14

标签: php jquery ajax wordpress gravity-forms-plugin

我想根据第一个下拉选择值,在其中一个页面中动态填充用户填写的重力表单。为此,在查看表单内容的所有页面中,我需要知道已选择的下拉输入。这是我到目前为止所做的:

- 在gravityforms.php的GFForms课程中: 在init函数中,我注册了我的钩子:

add_action( 'admin_enqueue_scripts', 'my_enqueue' );

和" maybe_process_form()"这个文件中的静态函数,我添加了my_enqueue:

function my_enqueue() {
wp_enqueue_script( 'ajax-script', plugins_url( '/js/ajaxSendField.js', __FILE__ ), array('jquery') );
wp_localize_script( 'ajax-script', 'ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
}

在js文件夹中处理名为ajaxSendField.js的文件:

<script type="text/javascript" >
jQuery(document).ready(function($) {

jQuery('#input_2_3').bind('onchange', function (){
ajaxSend(this.form);
});
});

function ajaxSend(form1)
{

    jQuery(document).ready(function($) {
    var data = {
        'action': 'my_enqueue'
    };

    jQuery.post(ajaxurl, data, function(response) { 
    });
});
}
</script>

其中,当我通过chrome检查时,input_2_3是下拉选择的id。到目前为止,如果我们想通过选择下拉菜单而不是提交表单来传递值,则应该在表单中设置onchange事件。但是,当我查看页面源时,它并没有显示出来。 - 在用于查看名为custompage1.php的提交值的页面模板中,我在其页脚上方添加了以下代码:

<?php
echo "Hi";
echo $_POST['input_3']."<br>"."Bye";
?>

input_3是select的名称。但是在表单提交(Ajax)时,我只能得到 你好 再见 但问题可能是什么?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我并不完全清楚你想要实现的目标,但是根据select选择更改表单值是你可以实现的,而无需对服务器进行ajax调用。无论如何,那不是你问的......

function ajaxSend(form1)
{
    jQuery(document).ready(function($) {
        var data = {
            'action': 'my_enqueue'
        };
        jQuery.post(ajaxurl, data, function(response) { 
        });
    });
}

您的代码需要完成一些工作,有几点可以帮助您入门。在上面的代码中,您已在函数中嵌套了一个函数。 jQuery(document).ready(function($)表示页面加载完成后,执行此操作。它不属于另一个功能。

var data = {
'action': 'my_enqueue'
} 

数据var是您告诉您的ajax调用发送到服务器的内容。在Wordpress中,action参数指定了您希望Wordpress执行的操作(更多内容如下),但您不会随之发送任何其他数据。根据你的目标,我认为你至少应该发送选择框的值。

jQuery.post(ajaxurl, data, function(response) { 
});

这会发布数据,但您还没有包含任何代码来指定如何处理响应。即使服务器向你发送了你想要的所有数据,除非你告诉你的ajax调用如何处理输出,否则什么都不会发生

至于Wordpress方面......让我们从这个

开始
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

这只会将您的脚本排入管理页面,这是您真正想要的还是add_action( 'wp_enqueue_scripts', 'my_enqueue' );会更好? 您的wp_localize_script参数与您的ajax调用中的值不匹配。我建议您重新阅读文档以了解其工作原理。

最后一点,我没有添加任何ajax动作。这些采取

的形式
add_action( 'wp_ajax_nopriv_ajax_action', 'my_function' );
add_action( 'wp_ajax_ajax_action', 'my_function' );

这些告诉Wordpress你想要绑定到你的ajax请求的功能。第一个是针对没有登录的用户,第二个针对的是用户。

坚持下去。你已经有了一个良好的开端,但你还有一段路要走。祝你好运。