我目前正在尝试学习 HTML、AJAX、PHP 和 MYSQL。我目前正在构建一个仅供内部使用的网络应用程序。它似乎有效,但现在我在使用 MYSQL 函数的代码中遇到了一些滞后。
发生的事情是这样的:
首先,我从 SQL 数据库创建一些“个人资料图像”。通过 PHP 像这样:
<?php
$price = 30;
$con = mysql_connect('localhost', 'root', 'root');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Og297", $con);
$result = mysql_query("SELECT * FROM Og297.Drinkers");
while($row = mysql_fetch_array($result))
{
$picture = $row['Picture'];
$name = $row['Name'];
$nameup= $name."up";
$namep= $name."p";
$Onbetaaldresult = mysql_query("SELECT COUNT(Betaald) AS ob FROM Og297.Bierlijst
WHERE Betaald='1' AND Name='$name'");
$Onbetaaldarray= mysql_fetch_array($Onbetaaldresult);
$Onbetaald= $Onbetaaldarray['ob'];
$Betaaldresult = mysql_query("SELECT COUNT(Betaald) AS b FROM Og297.Bierlijst
WHERE Betaald='0' AND Name='$name'");
$Betaaldarray= mysql_fetch_array($Betaaldresult);
$Betaald= $Betaaldarray['b'];
echo "<div onclick=\"addBeer('$name','$price');\" class= 'thumbnail'><img src= $picture height= '90' width= '90' alt= $name title= $name><div class= 'overlay'><span id=$nameup class='unpaid'>$Onbetaald</span><span id= $namep class='paid'>/$Betaald</span></div></div>";
}
mysql_close($con);
?>
因此,这会为每个用户显示一个图片 div,在其顶部显示 ID 的已付费和未付费(该应用程序用于跟踪我们已经支付了多少啤酒以及还需要支付多少啤酒)。这一切都有效。
接下来我有一些功能;
On是addBeer,它将啤酒添加到表中,包括那个人的名字。这是通过 Ajax 完成的。
function addBeer (n,p)
{
$.post("AddBeer.php",{naam: n, price: p});
updateBeer(n);
}
因此,将啤酒插入数据库后,我希望它更新付费和未付费范围。我通过使用 updateBeer 来做到这一点。
function updateBeer (n)
{
$.post("UpdateBeer.php",{naam: n},function(data) {
changeInfo(n,data.betaald,data.onbetaald);
},"json");
}
这会返回 Json 对象中已付款和未付款的金额。然后将这些值(包括人名)提供给changeInfo函数,该函数将像这样更新跨度:
function changeInfo(n,b,ob)
{
window.alert("ja");
document.getElementById(n + "up").innerHTML=ob;
document.getElementById(n + "p").innerHTML="/" + b;
}
但是,每次我单击图像时,信息都不会更新。它落后了,虽然插入了啤酒,但跨度的更新没有发生。怎么会呢?
非常感谢您阅读这个巨大的问题!
我的代码中的问题是 AJAX 请求是异步的。因此,在 AJAX 请求完成之前执行脚本的其余部分时会出现问题。技巧是设置 AJAX 请求以将 Async 设置为 false!
谢谢!