这可能是范围问题,但我想涵盖所有基础。我成功地将值,距离发送到Ajax处理函数。这是JS:
$.ajax({
type: 'POST',
url: url,
data: {
'action':'example_ajax_request',
'distance' : distance
},
success:function(response) {
// This outputs the result of the ajax request
console.log(response);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
我可以访问后端的距离变量:
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
// Dynamic field population
function example_ajax_request() {
// The $_REQUEST contains all the data sent via ajax
if ( isset($_POST) ) {
$distance = $_POST['distance'];
// echo $distance;
}
die();
}
$distance
包含值,我可以成功回显它。但是我需要在另一个挂入重力形式的函数中使用这个值。我需要动态设置重力形式值(使用他们的gform_field_value_$parameter_name
挂钩)。问题是我无法找到一种方法来访问Ajax函数之外的$_POST['distance']
值,并且在$_POST['distance']
可用之前引发Gravity Forms钩子(我的猜测)。
有没有办法在WP中的处理函数之外访问Ajax发送的$_POST
对象?我看这一切都错了吗?关于如何使用该值动态填充Gravity Forms字段的任何建议?
提前致谢。
答案 0 :(得分:0)
这是我发现的:
由于WP已经加载,因此无法在钩子中使用Ajax数据。该数据仅在前端提供。为此,你会:
$.ajax({
type: 'POST',
url: url,
data: {
'action':'example_ajax_request',
'distance' : distance
},
success:function(response) {
// This outputs the result of the ajax request
console.log(response);
$('#your-GF-ID').val( response ); // This is where you update your GF field
},
error: function(errorThrown){
console.log(errorThrown);
}
});
另一种选择是将数据保存在数据库中,而只是前面的Ajax。