如何自发地打开jQuery对话框消息(根据db更改)?

时间:2015-05-17 06:13:49

标签: javascript jquery html jquery-dialog

我知道如何调用jQuery对话框。首先,我将设计我的对话框,我将调用

$('#dialogbox').dialog('open');

通常我会在页面加载时或在按钮点击等任何事件上调用对话框。

但我的情况是这样的。我的客户端发送紧急消息,我将进入服务器(Web应用程序)。该消息可能随时出现。当消息传来时,我将它存储在DB中。在这里,我必须弹出服务器应用程序。为此我打算使用jQuery对话框。该消息可能随时出现,我的意思是当http://localhost:8080/ITS/Login.html页面打开时消息可能会出现在服务器中,或者当http://localhost:8080/ITS/BusDetail.html打开时消息可能会出现,所以我显示了弹出窗口login.htmlBusDetails.html就像这样有很多html,JSP页面。那么我怎样才能为这种情况调用jquery dialog。请帮助我。

2 个答案:

答案 0 :(得分:0)

当页面通过ajax加载询问是否需要显示模态时,为什么不向服务器发出请求。因此,无论何时刷新页面,您都会发现模态是否需要显示。

答案 1 :(得分:0)

您有2个选项,或者您正在从客户端进行定时ping操作。 意味着每隔X秒,您需要向服务器发送一个请求,以检查是否有任何行已更新。或者,您将需要WebSocket。

第一个选项,是有一个setInterval:

 function checkDatabase(){
     $.ajax({url: "http://wwww.myserver.com/getDBcheck", success: function(result){
    $('#dialogbox').dialog('open');
  }});
    var myVar = setInterval(checkDatabase, 1000)

这将每1秒轮询服务器(如果需要,可以更多),以查看是否有新消息。

您可以查看有关WebSockets here的更多信息。

第二个选项

对于WebSockets,您的服务器应该支持WS。

在您的Javascript代码客户端中,您应该启动WebSocket握手,如下所示:

    // Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');
// Connection opened
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});
// Listen for messages
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
    $('#dialogbox').dialog('open');
});

注意:WebSocket URL应该是WS服务器的地址+您在服务器中设置的端口。

这是一个如何使用JSP + TOMCAT 7实现WebSocket的示例 https://www.programering.com/a/MDO4cDMwATE.html