遗憾的是,我无法成功地从我的MySQL数据库中使用简单的ajax请求检索数据。
我在启用的简码中使用 ajax 设置了一个重力。当我更改第一个字段的选择时,我希望完成一个 ajax 请求以从数据库中检索数据并根据第一个字段的选择将其加载到另一个字段中。
警报正在工作,所以我想 jquery 请求有问题。
编辑:下面的解决方案!
关于你的代码有很多话要说,但正如你所说,你是代码新手,所以让我们从小处着手。
在为 Web 开发时要做的一件好事是使用大多数最新浏览器都有的开发人员工具。 特别是使用Ajax,因为它可以帮助您找出问题所在。
在 Firefox 或 Chrome 上,您可以通过按 F12 来显示它。 它应该打开一个新窗口(或当前打开的窗口底部或一侧的面板(。 在此面板中,您会找到几个选项卡,但是我们在这里感兴趣的选项卡称为 "网络" 。 网络选项卡显示加载页面时发出的所有请求(即使在之后(:尝试重新加载它,您将看到它。 在网络面板中,您会发现几个"按钮":ALL,XHR JS,CSS,...允许您筛选要显示的请求类型。 对于 AJAX 请求示例,它是"XHR"。
现在,如果您操作选择元素(使用jQuery在"更改"上创建操作的元素(,您应该会看到您的AJAX请求出现在面板中。
单击它,您将看到有关已发送的详细信息,以及收到的响应: 标头对应于您的请求 预览和响应显示服务器的返回(在您的情况下:getrcedepot.php((预览只是显示原始响应的最高级(和可导航(版本的响应(
您可能会发现问题的一些线索(或至少是一些迹象(。
另外,您的JavaScript代码中有一些错误,您可能会在开发人员工具箱的"控制台"选项卡中找到一些信息。
更新:这是我正在使用的当前解决方案,它是最好的解决方案。我没有在 php 文件中创建一个单独的连接,而是访问了 wordpress 功能。
这是重力表单 ajax 请求的代码,用于在对选择框进行更改后从 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";
}
?>