我想根据第一个下拉选择值,在其中一个页面中动态填充用户填写的重力表单。为此,在查看表单内容的所有页面中,我需要知道已选择的下拉输入。这是我到目前为止所做的:
- 在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)时,我只能得到 你好 再见 但问题可能是什么?任何建议将不胜感激。
答案 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请求的功能。第一个是针对没有登录的用户,第二个针对的是用户。
坚持下去。你已经有了一个良好的开端,但你还有一段路要走。祝你好运。