目前我有一个获取所需信息的ajax函数,但是我必须在添加新内容时手动刷新它。
我的代码暂时看起来像这样:
<script>
$(function (){
$(function ajax(){
$.ajax({
url: "info.php",
type:"get",
datatype: "json",
success: function(data){
var clean = jQuery.parseJSON(data);
$.each(clean, function(i){
var t = new Date(clean[i]['upplagd']);
var tid = (t.getDate() + " / "+ (t.getMonth()+1) + " / " + t.getFullYear());
var table = $('tbody').html();
$('tbody').html(table + '<tr><td><img src="img/' + clean[i]['bild'] + '"></td><td>' +
clean[i]['titel'] + "<br><b>" + clean[i]['kund'] + "</b></td><td>" +
clean[i]['kommun'] + "</td><td>" +
tid + "</td></tr>");
}
});
});
});
</script>
因此,它获取信息并将其打印出来。非常简单。 当AJAX获取其信息时,这是我的php页面。
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GTM");
$database = "database";
$server = "localhost";
$user = "root";
$pass = "pass";
$db = mysqli_connect($server,$user,$pass,$database);
$sql = "SELECT * FROM xterna";
$array = [];
$result = mysqli_query($db,$sql) or die(mysqli_error($conn));
while($row = mysqli_fetch_assoc($result)){
$row_arr['id'] = $row['id'];
$row_arr['kommun'] = $row['kommun'];
$row_arr['kund'] = $row['kund'];
$row_arr['titel'] = $row['titel'];
$row_arr['upplagd'] = $row['upplagd'];
$row_arr['bild'] = $row['bild'];
array_push($array,$row_arr);
}
$json = json_encode($array, JSON_PRETTY_PRINT);
echo $json;
?>
我知道你可以使用setinterval并调用该函数,但是当我这样做时它会给我所有东西而不只是一个数据。
有人知道一个简单的代码或任何东西吗?
答案 0 :(得分:0)
如您所知,HTTP不是全双工双向通信通道,因此没有明显的方法通知浏览器数据库有更新,但有多种解决方案:
1-定期检查服务器
在此解决方案中,您会在一定时间后定期发送HTTP请求,服务器将响应更新(如果有)。我不建议这种方法用于性能问题。
2长投票
这基本上是向服务器发送HTTP请求,然后服务器将保持请求打开,直到有新的更新,之后服务器将返回带有更新的响应,然后发送另一个请求等等。
3- Websockets
websockets是一个与HTML5捆绑在一起的新功能,浏览器可以打开一个到服务器的全双工双向通信通道,服务器可以将更新发送到客户端,而无需重复发送HTTP请求来检查新的更新。