0

可悲的是,我没有成功从我的 mysql 数据库中使用简单的 ajax 请求检索数据。

我在启用简码中使用 ajax 设置了重力。当我更改第一个字段的选择时,我希望执行 ajax 请求以从数据库中检索数据并根据第一个字段的选择将其加载到另一个字段中。

警报正在工作,所以我猜 jquery 请求有问题。

编辑:下面的解决方案!

4

2 回答 2

0

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

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

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

现在,如果您操作您的选择元素(您使用 jQuery 在“更改”上创建一个操作),您应该会看到您的 AJAX 请求出现在面板中。

单击它,您将看到已发送的详细信息,并收到响应:标头对应于您的请求预览和响应显示服务器的返回(在您的情况下:getrcedepot.php)(预览只是最漂亮的(并且可导航) 显示原始响应的响应版本)

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

另外,您的 JavaScript 代码中有一些错误,您可能会在开发工具箱的“控制台”选项卡中找到一些信息。

于 2018-10-19T14:29:02.650 回答
0

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

这是在选择框上进行更改后从 mysql 数据库获取数据的重力表单 ajax 请求的代码。

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";
}

?>
于 2018-10-19T16:33:33.330 回答