Gravity Forms post/get 从 mysql 数据库获取数据

Gravity Forms post/get to get data from mysql database

遗憾的是,我无法通过 mysql 数据库中的简单 ajax 请求成功检索数据。

我在启用短代码的 ajax 中设置了引力。当我更改第一个字段的选择时,我希望完成 ajax 请求以从数据库中检索数据并将其加载到另一个字段,具体取决于第一个字段的选择。

警报有效,所以我猜 jquery 请求有问题。

编辑:下面的解决方案!

关于您的代码有很多要说的,但正如您所说的您是代码新手,所以让我们从小处着手。

为 Web 开发时,一件好事是使用大多数最新浏览器都具有的开发人员工具。 尤其是 Ajax,因为它可以帮助您找出问题所在。

在 Firefox 或 Chrome 上,您可以按 F12 显示它。 它应该会显示一个新的 windows(或在底部或当前打开的 window 的一侧显示一个面板)。 在此面板中,您会发现几个选项卡,但我们在这里感兴趣的是 "Network" 。 网络选项卡显示加载页面时发出的所有请求(甚至之后):尝试重新加载它,你会看到它。 在网络面板内,你会发现几个 "buttons": ALL, XHR JS, CSS, ... 允许你过滤要显示的请求类型。 例如 AJAX 请求是 "XHR".

现在,如果您操作 select 元素(您使用 jQuery 在 "change" 上创建操作的元素),您应该会看到您的 AJAX 请求出现在面板。

点击它,您将看到有关已发送和已收到回复的详细信息: Headers符合您的要求 预览和响应显示服务器的 return(在您的情况下:getrcedepot.php)(预览只是显示原始响应的响应的最漂亮(和可导航)版本)

您可能会发现问题所在的一些线索(或至少是一些迹象)。

此外,我的 JavaScript 代码有一些错误,您可以在开发者工具箱的 "Console" 选项卡中找到一些信息。

更新:这是我目前使用的解决方案,我认为这是最好的。我没有在 php 文件中创建单独的连接,而是访问 wordpress 功能。

这是重力形式的代码 ajax 在 select 框上完成更改后从 mysql 数据库获取数据的请求。

add_filter("gform_pre_render_2", "getdbdata");
    function getdbdata($form){
        ?>
            <script type="text/javascript">
            jQuery(document).ready(function(){
                jQuery('#input_2_1').bind('change', function()
                {
                  var vdepot_id = jQuery("#input_2_1").val();   

                  jQuery.ajax({
                    async: 'false',
                    type: 'post',
                    global: 'false',
                    dataType: 'json',
                    url: 'yoursite.com/yourscript.php',
                    data: {
                      virtuellesdepot_id:vdepot_id,
                    },
                    success: function (response) {  
                        jQuery("#input_2_28").val(response.status);
                    }
                  });                       
                });
            });
            </script>
        <?php
        return $form;
        }

这就是您在服务器上需要的 php 代码:

<?php
if( isset( $_POST['virtuellesdepot_id'] ) )
{
$vdepot_id = $_POST['virtuellesdepot_id'];

define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require_once("../wp-load.php");  //now you can use wp functions
$user_id = get_current_user_id();

//make a security check if user has access to the entry
$user_check = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM usertable WHERE vdepot_id= %d ",  $vdepot_id));
    if($user_check != $user_id){
    header("Location: https://yoursite/no-access/");
    exit();
}

//use any sql query you want
$status = $wpdb->get_var($wpdb->prepare("SELECT status_id FROM table WHERE user_id= %d ",  $user_id));
$arr = array ('status'=>$status);
echo json_encode($arr);

}else{
echo "Fehler bei if isset";
}

?>