我的表中有关于我的sql实体的问题。
我有2个php脚本,一个向表中添加新项目,另一个获取所有项目并将它们作为json返回。
返回脚本需要一些时间来返回实际的条目。我的意思是,如果我在表中添加或删除entrie,我的返回脚本仍会在删除/添加之前显示我的条目。经过一段时间后,它得到了正确的结果,但我无法解释原因。
这是我的返回代码:
$con = new mysqli($servername, $username, $password, $dbname);
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"Einkaufsliste");
$sql="SELECT * FROM Einkaufsliste";
$result = $con->query($sql);
while($row = $result->fetch_array(MYSQLI_ASSOC)){
$rows[] = $row;
}
$items = array();
foreach($rows as $row){
$row_array['item'] = $row['item'];
array_push($items, $row_array);
}
echo json_encode($items);
/*echo "bla";*/
$con->close();
所以,如果我在我的表中有3个项目并且我添加一个,我的返回值仍然是3.如果我通过phpmyadmin检查我的数据库有4个条目。
我忘了提到这是我如何通过jscript
拉取我的结果function showItems() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//document.getElementById("test").innerHTML = xmlhttp.responseText;
//alert(xmlhttp.responseText);
document.getElementById("itemList").innerHTML = "";
var res = JSON.parse(xmlhttp.responseText);
alert(res);
for(var k = 0; k < res.length; k++){
$('#itemList').append('<li><a href="#">'+res[k].item+'</a><a class="deleteMe"></a></li>').listview('refresh');
}
}
};
xmlhttp.open("GET","getItems.php",true);
xmlhttp.send();
}
答案 0 :(得分:0)
在输出ajax响应的页面中添加no-cache标头:
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
或者在ajax调用中添加一个带有时间戳的参数,这样每个请求都将被视为唯一并单独缓存,从而产生关闭缓存的错觉:
var d = new Date();
xmlhttp.open("GET", "getItems.php?t="+d.getTime(), true);
或两者兼而有之。