我有一个HTML页面JavaScript,它将GET请求数据发送到PHP文件,以返回保存在数据库中的所有数据。 PHP回复HTML表 - 工作正常!
但是:如果我点击一个按钮(调用相同的JavaScript函数)来更新我的表以显示新数据,我得到相同的结果(我肯定在表上有新数据)。
如果我通过浏览器手动调用PHP,它会立即向我显示新的结果,此时它也在使用JavaScript(但只有一次)。
这是我的代码的一部分。
HTML / JS:
<button onclick="GetData()"></button>
<div id="test"></div>
<script>
function GetData(){
var xhttp = new XMLHttpRequest();
document.getElementById("test").innerHTML = "";
xhttp.onreadystatechange = function(){
if (xhttp.readyState == 4 && xhttp.status == 200){
document.getElementById("test").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "../GetData.php", true);
xhttp.send();
}
</script>
PHP:
//DB details
$dbHost = 'localhost';
$dbUsername = 'lalalala';
$dbPassword = 'lalalalal';
$dbName = 'lalalala';
//Create connection and select DB
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName) or die ("UUUUPS");
$sql = "select name, beschreibung, image, video from data";
$result = $db->query($sql);
if ($result->num_rows > 0) {
$return = '<table class ="table table-hover"><thead><tr><th scope="col">Name</th><th scope="col">Beschreibung</th><th scope="col">Bilddatei</th><th scope="col">Video-Url</th></tr></thead><tbody>';
// output data of each row
while($row = $result->fetch_assoc()) {
$return .= "<tr><td>".$row["name"]."</td><td>".$row["beschreibung"]."</td><td><img src=data:image/png;base64,".base64_encode($row["image"])."/></td><td>".$row["video"]."</tr>";
}
$return .= "</tbody></table>";
$db->close();
echo $return;
} else {
echo "0 results";
}
感谢您的帮助!
答案 0 :(得分:1)
您的浏览器似乎正在缓存您的结果,这就是您查看数据的原因。 你可以像这样测试:
var random = Math.floor(Math.random() * 100);
xhttp.open("GET", "../GetData.php?"+random, true);
如果这有帮助,请查看PHP脚本中的expire标头。此外,您在过时的过程中进行查询的方式。它是一种非常PHP4的方式。看看这里:http://php.net/manual/en/book.mysqli.php
答案 1 :(得分:0)
我猜你可能知道这件事,但以防万一。在测试html页面时,您是否浏览过浏览器检查器?特别是该检查器中的网络选项卡。在那里你可以看到来自服务器的实际响应,你可以看到它是从缓存提供还是提取(你甚至可以在那里禁用缓存),也许这会有所帮助。
亲切的, 标记