不幸的是,我无法从mysql数据库中通过简单的ajax请求检索数据。
我在启用简码的过程中使用ajax设置具有引力。当我更改第一个字段的选择时,我希望执行一个ajax请求以从数据库中检索数据并将其加载到另一个字段中,具体取决于第一个字段的选择。
警报正在运行,因此我认为jquery请求有问题。
这是我用摘录的代码编写的代码。
add_filter(“ gform_pre_render_2”,“ monitor_dropdown”);
function monitor_dropdown($form){
?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#input_2_1').bind('change', function()
{
var vdepot_id = jQuery("#input_2_1").val(); //vdepot_id in variable speichern, muss an get request weitergegeben werden um über die id die richtige rce depot dann zu ermitteln
//alert(vdepot_id);
if(vdepot_id == "2")
{
alert("Starte request mit vdepot_id = " + vdepot_id);
jQuery.ajax({
type: 'post',
url: 'https://tradingdiary.whitepictures.de/getrcedepot.php',
data: {
virtuellesdepot_id:vdepot_id, //links virtuellesdepot_id ist die variable die übegeben wird mit dem Wert von rechts
},
success: function (response) { //im falle von erfolg wird in variable response das ergebnis (echo) geschrieben
alert(response);
//rce_vdepot = response;**
}
});
}
else
{
alert("Kein request gestartet");
}
var rce_vdepot = 77777;
jQuery("#input_2_28").val(rce_vdepot); //rce in gravity form feld schreiben
});
});
</script>
<?php
return $form;
}
这是我的PHP代码。我不太确定将php文件放在我的wordpress服务器上的什么位置? 前往www。***** / getrcedepot.php时 php被执行了,所以我猜它在正确的位置。
首先,我只想成功发送回声一个数字,以查看请求是否有效。但事实并非如此。 如果有人可以帮助我,那太好了,我只是编码的新手。
<?php
if( isset( $_POST['virtuellesdepot_id'] ) )
{
$vdepot_id = $_POST['virtuellesdepot_id'];
$servername = "localhost:3306";
$username = "wp_6kven";
$password = "DOWN19kona93Hill";
$dbname = "wp_13538";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//echo "Connected successfully";
$sql = "SELECT * FROM virtuelledepots WHERE virtuellesdepot_id = '$vdepot_id' ";
$result = mysqli_query($conn,$sql);
//echo $result;
echo 55555555;
//$conn->close();
}else{
echo "Fehler bei if isset";
}
?>
答案 0 :(得分:0)
关于您的代码,有很多话要说,但是正如您所说的,您是代码的新手,所以从小处着手。
为网络开发时要做的一件好事是使用大多数最新浏览器都具有的开发人员工具。 尤其是使用Ajax,因为它可以帮助您找出问题所在。
在Firefox或Chrome上,您可以按F12来显示它。 它会令人讨厌一个新窗口(或当前打开的窗口底部或一侧的面板)。 在此面板中,您会找到几个选项卡,但此处令我们感兴趣的选项卡称为“网络”。 “网络”标签显示了加载页面时(即使在加载后)发出的所有请求:尝试重新加载它,您将看到它。 在网络面板内,您将找到几个“按钮”:ALL,XHR JS,CSS,...,允许您过滤要显示的请求的类型。 对于AJAX请求的示例,它是“ XHR”。
现在,如果您操纵select元素(使用jQuery在“更改”上创建一个动作),您应该会在面板中看到您的AJAX请求。
单击它,您将看到发送的详细信息,并收到响应: 标头符合您的要求 预览和响应显示服务器的返回信息(以您的情况为例:getrcedepot.php)(预览只是显示原始响应的响应的最漂亮(且可导航)的版本)
您可能会发现问题的一些线索(或至少有一些迹象)。
我的JavaScript代码也有错误,您可能会在开发人员工具箱的“控制台”标签中找到一些信息。
答案 1 :(得分:0)
好吧,我终于明白了。 这是在选择框完成更改后,从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();
alert("Starte request mit vdepot_id = " + vdepot_id);
jQuery.ajax({
async: 'false',
type: 'post',
global: 'false',
dataType: 'html',
url: 'https://tradingdiary.whitepictures.de/getrcedepot.php',
data: {
virtuellesdepot_id:vdepot_id,
},
success: function (data) {
jQuery("#input_2_28").val(data);
}
});
});
});
</script>
<?php
return $form;
}
这就是您在服务器上所需的php代码:
<?php
if( isset( $_POST['virtuellesdepot_id'] ) )
{
$vdepot_id = $_POST['virtuellesdepot_id'];
$servername = "****";
$username = ""****"";
$password = ""****"";
$dbname = ""****"";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//echo "Connected successfully";
$sql = "SELECT virtuellesdepot_id, virtuellesdepot_calc_rce FROM virtuelledepots WHERE virtuellesdepot_id = '$vdepot_id' ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo $row["virtuellesdepot_calc_rce"];
}
} else {
echo "0 results";
}
$conn->close();
}else{
echo "Fehler bei if isset";
}
?>