我有一个数据库,其中包含一个特定值,例如yes
,因此,如果管理员将该值更改为no
,则如果有用户查看该页面,则元素将被更改。 / p>
因此,如果我在该页面中有此文本,并且值为yes
,则文本为:
<p id="change">Yes, This text will be changed if the DB value is changed.</p>
如果该值为no,则文本为:
<p id="change">No, This text will be changed if the DB value is changed.</p>
我正在使用PHP和MYSQL,可以编写SQL语句以及Ajax请求。
我已经多次使用Ajax,但是内容已针对特定的访问者或管理员(如果他执行了操作)进行了更改。
但是我不知道更改其他用户的内容,即该DB值更改时。
答案 0 :(得分:1)
您可以使用AJAX每隔x秒检查一次数据库并相应地更新结果。
使用AJAX将GET或POST请求发送到您网站的路径,该路径在查询数据库后将返回yes或no,因此您可以使用JS更新p
元素的内容。
我建议使用内存缓存或类似的数据库缓存,因为每隔几秒钟直接查询一次数据库效率不高,并且如果同时连接多个客户端,则会降低服务器的性能。
Ajax请求前端GET请求
$.ajax({
url: "/ajax/backendprocessor.php?id_of_value=1",
type: "get",
success: function (response) {
//check the response and update the element
}
});
对于backendprocessor.php,从$ _GET变量获取id_of_value,然后查询数据库/缓存服务器并返回YES或NO
因此,每15秒钟运行一次代码,您就可以在jQuery中完成
setInterval(getUpdate, 15000);
和getUpdate函数将包含ajax代码。
答案 1 :(得分:1)
在您的情况下,客户端是浏览器,必须知道dB值的变化。有两种方法
客户端定期(可能每X秒)向服务器发送ajax请求以检查DB值,如果更改,则更新UI。会有X秒的延迟。如果db值不经常更改,可能还会浪费资源。
var getDbValue = function(){
$.get("server.php", function(data, status){
//update the UI
setTimeout(getDbValue, 5000);
});
};
setTimeout(getDbValue,5000);
MQTT。客户端订阅消息队列主题,当值更新时,服务器将消息发布到该主题。客户将近实时地收到更新。
这是一个大话题,将需要更多的服务器设置。也有云消息队列服务,例如AmazomMQ。如果您了解这个概念,就很容易进行配置。
var client = new MQTTClient(options);
client.connect(options);
client.on('connected', function(){
client.subscribe("your_topic");
});
client.on('messageArrived', function(msg){
//the message will contain the db value published from the server
//update UI
});