PHP'yi arka uç olarak kullanarak Ajax'ı öğreniyorum. Denediğim, tablo değerlerini setTimeout'u JavaScript kullanarak veritabanından almak ve güncellemek. İşte Bu iki argüman neden aynı değeri getirir?
benim kod:A. ex1.php (aşağıda sorunu anlattım)
<?php
$a=mysqli_connect("localhost", "root", "", "ndb");
$query="SELECT name from tab3";
$queryrun=mysqli_query($a, $query);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="jquery-2.2.0.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
var update= setTimeout(myFunc2, 4000);
function myFunc2(){
var yhttp= new XMLHttpRequest();
yhttp.onreadystatechange=function(){
//if(yhttp.readyState==4 && yhttp.status==200)
};
yhttp.open("GET", "exresponse2.php", true);
yhttp.send();
}
</script>
<script>
var cmp= setTimeout(cmpFunc, 100);
function cmpFunc(){
var h="";
var h2="";
var cmp2= setTimeout(cmp2Func, 2000);
function cmp2Func(){
h= '<?php $height=mysqli_num_rows($queryrun); echo $height; ?>';
}
var cmp3 =setTimeout(cmp3Func, 8000);
function cmp3Func(){
h2= '<?php $height2=mysqli_num_rows($queryrun); echo $height2; ?>';
if(h==h2)
{
alert(h+" "+h2);
}
else
{
alert("Not same");
}
}
}
</script>
</head>
<body>
<div id="id1" style="float: left; width: 300px">
The names are displayed below:</div>
<div id="id2" style="float: left; width: 200px">
<button onclick="myFunc2()">Submit</button>
</body>
</html>
B. exresponse.php
<?php
$a=mysqli_connect("localhost", "root", "", "ndb");
$query="SELECT name from tab3";
$queryrun=mysqli_query($a, $query);
$names=array();
while($row=mysqli_fetch_assoc($queryrun))
{
$names[]= $row["name"];
}
$x="";
$count=0;
for($x=0; $x<25; $x++)
{
echo "Name: ".$names[$x];
echo "<br>";
}
?>
<html>
<head>
<script src="jquery-2.2.0.js"></script>
</head>
<title></title>
<body>
</body>
</html>
Gördüğünüz gibi, sayfa ex1.php iken tarayıcıda açılır, 100 mikro saniye sonra cmpFunc yürütülür, daha sonra 2 saniye sonra cmp2Func yürütür ve değişken h bir değer atanır; ve 2 saniye daha sonra myFunc2 yürütülür (veri tabanındaki tablo güncellenir). Bundan sonra cmp3Func yürütülür ve h2 değişken atanır.
Ancak her defasında, yalnızca ifade çalıştırılırsa. Ancak, tablo h ve h2 arasında güncelleştirilmelidir ve değerleri FARKLI değerler olmalıdır. Burada yanlış bir şey mi yapıyorum?
Bu sorunu çok değiştirmeden bu sorunu çözebilir miyim? –
Bana biraz daha önemli bir yeniden çalışma yapmam gerektiğini düşünüyorum, cevabımı bir çözüm için olası bir yolla güncelledim. –