Javascript 使用Dajax流式传输日志消息

Javascript 使用Dajax流式传输日志消息,javascript,dajaxice,dajax,Javascript,Dajaxice,Dajax,我正在尝试为我的网站创建一个记录器窗口,将python记录器消息流式传输到javascript弹出窗口。我已经到了这样的地步,如果我关闭窗口并重新打开它,将显示新的消息,但我想编写一些javascript,每N秒自动刷新一次窗口(并调用dajaxice) 我的ajax.py: @dajaxice_register(method='GET') def getLogs(request): fname = "/path/to/LOG_2015-07-08.log" with open(fnam

我正在尝试为我的网站创建一个记录器窗口,将python记录器消息流式传输到javascript弹出窗口。我已经到了这样的地步,如果我关闭窗口并重新打开它,将显示新的消息,但我想编写一些javascript,每N秒自动刷新一次窗口(并调用dajaxice)

我的ajax.py

@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-08.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]  //
  logger.info("Displaying Logs")
  return json.dumps({'message':lines})
<script language="javascript" type="text/javascript">
  function popitup(data) {
    sessionStorage.setItem("logs",data.message);
    newWindow = window.open('/InterfaceApp/LogViewer', 'Log Viewer', 'height=400,width=800,status=yes');
    if(newWindow && !newWindow.closed){

    newWindow.location.reload(true);  //this is my first attempt at a refresh, wasn't quite what I wanted.

    newWindow.focus();
    } 
  }
</script>
<div class="container">
  <input id="LogMessages" type="button" value="View Log Messages" onclick="Dajaxice.InterfaceApp.getLogs(popitup)"/>
</div>
@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-09.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]
  return json.dumps({'message':lines})
 <div class="container-fluid">
  <h4 class="text-center">Log Messages</h4>
  <div class="content">
    <span class='value'></span>
  </div>
  <script language="javascript" type="text/javascript">
    function saveLogs(data){
      sessionStorage.setItem("logs",data.message);
    }
      $(document).ready(
        function() {
          setInterval(function() {
            Dajaxice.InterfaceApp.getLogs(saveLogs);
            var logs = sessionStorage.getItem("logs");
            document.querySelector('.content .value').innerText = logs;      
          }, 3000);
        });
  </script>
</div>        
我的html

@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-08.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]  //
  logger.info("Displaying Logs")
  return json.dumps({'message':lines})
<script language="javascript" type="text/javascript">
  function popitup(data) {
    sessionStorage.setItem("logs",data.message);
    newWindow = window.open('/InterfaceApp/LogViewer', 'Log Viewer', 'height=400,width=800,status=yes');
    if(newWindow && !newWindow.closed){

    newWindow.location.reload(true);  //this is my first attempt at a refresh, wasn't quite what I wanted.

    newWindow.focus();
    } 
  }
</script>
<div class="container">
  <input id="LogMessages" type="button" value="View Log Messages" onclick="Dajaxice.InterfaceApp.getLogs(popitup)"/>
</div>
@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-09.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]
  return json.dumps({'message':lines})
 <div class="container-fluid">
  <h4 class="text-center">Log Messages</h4>
  <div class="content">
    <span class='value'></span>
  </div>
  <script language="javascript" type="text/javascript">
    function saveLogs(data){
      sessionStorage.setItem("logs",data.message);
    }
      $(document).ready(
        function() {
          setInterval(function() {
            Dajaxice.InterfaceApp.getLogs(saveLogs);
            var logs = sessionStorage.getItem("logs");
            document.querySelector('.content .value').innerText = logs;      
          }, 3000);
        });
  </script>
</div>        

函数popitup(数据){
sessionStorage.setItem(“logs”,data.message);
newWindow=window.open('/InterfaceApp/LogViewer','Log Viewer','height=400,width=800,status=yes');
if(newWindow&!newWindow.closed){
newWindow.location.reload(true);//这是我第一次尝试刷新,并不是我想要的。
newWindow.focus();
} 
}
重申一下,我想点击按钮,弹出一个窗口。我希望弹出窗口每N秒刷新一次日志文件的最后15行(每次用户浏览网站时,这些行都会添加到日志中)。
ajax.py
中的dajaxice函数用于获取日志文件,因此需要在刷新中包含调用

有人能帮我解决这个问题吗?我已经挣扎了好几天了


谢谢

我能够自己解决这个问题。下面的代码对我有用

ajax.py

@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-08.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]  //
  logger.info("Displaying Logs")
  return json.dumps({'message':lines})
<script language="javascript" type="text/javascript">
  function popitup(data) {
    sessionStorage.setItem("logs",data.message);
    newWindow = window.open('/InterfaceApp/LogViewer', 'Log Viewer', 'height=400,width=800,status=yes');
    if(newWindow && !newWindow.closed){

    newWindow.location.reload(true);  //this is my first attempt at a refresh, wasn't quite what I wanted.

    newWindow.focus();
    } 
  }
</script>
<div class="container">
  <input id="LogMessages" type="button" value="View Log Messages" onclick="Dajaxice.InterfaceApp.getLogs(popitup)"/>
</div>
@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-09.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]
  return json.dumps({'message':lines})
 <div class="container-fluid">
  <h4 class="text-center">Log Messages</h4>
  <div class="content">
    <span class='value'></span>
  </div>
  <script language="javascript" type="text/javascript">
    function saveLogs(data){
      sessionStorage.setItem("logs",data.message);
    }
      $(document).ready(
        function() {
          setInterval(function() {
            Dajaxice.InterfaceApp.getLogs(saveLogs);
            var logs = sessionStorage.getItem("logs");
            document.querySelector('.content .value').innerText = logs;      
          }, 3000);
        });
  </script>
</div>        
html

@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-08.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]  //
  logger.info("Displaying Logs")
  return json.dumps({'message':lines})
<script language="javascript" type="text/javascript">
  function popitup(data) {
    sessionStorage.setItem("logs",data.message);
    newWindow = window.open('/InterfaceApp/LogViewer', 'Log Viewer', 'height=400,width=800,status=yes');
    if(newWindow && !newWindow.closed){

    newWindow.location.reload(true);  //this is my first attempt at a refresh, wasn't quite what I wanted.

    newWindow.focus();
    } 
  }
</script>
<div class="container">
  <input id="LogMessages" type="button" value="View Log Messages" onclick="Dajaxice.InterfaceApp.getLogs(popitup)"/>
</div>
@dajaxice_register(method='GET')
def getLogs(request):
  fname = "/path/to/LOG_2015-07-09.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-15:]
  return json.dumps({'message':lines})
 <div class="container-fluid">
  <h4 class="text-center">Log Messages</h4>
  <div class="content">
    <span class='value'></span>
  </div>
  <script language="javascript" type="text/javascript">
    function saveLogs(data){
      sessionStorage.setItem("logs",data.message);
    }
      $(document).ready(
        function() {
          setInterval(function() {
            Dajaxice.InterfaceApp.getLogs(saveLogs);
            var logs = sessionStorage.getItem("logs");
            document.querySelector('.content .value').innerText = logs;      
          }, 3000);
        });
  </script>
</div>        

日志消息
函数保存日志(数据){
sessionStorage.setItem(“logs”,data.message);
}
$(文件)。准备好了吗(
函数(){
setInterval(函数(){
Dajaxice.InterfaceApp.getLogs(saveLogs);
var logs=sessionStorage.getItem(“日志”);
document.querySelector('.content.value')。innerText=日志;
}, 3000);
});
我使用dajaxice而不是直接的ajax,在正确配置所有设置之前,这需要相当多的时间,但这似乎比尝试学习如何将ajax和php集成到我的django项目中更容易