2015-07-09 3 views
0

Я пытаюсь создать окно журнала для моего сайта, который передает сообщения журнала python в всплывающее окно javascript. Я дошел до того, что, если я закрою окно и снова открою его, появятся новые сообщения, но я хочу написать javascript, который автоматически обновляет окно (и вызывает dajaxice) каждые N секунд.Использовать Dajax для отправки сообщений журнала

Мой 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}) 

Мой HTML:

<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> 

Повторюсь, я хочу, чтобы нажать на кнопку, и есть всплывающее окно придумать. Я хочу, чтобы это всплывающее окно обновляло каждые N секунд с последними 15 строками моего файла журнала (строки добавляются в журнал каждый раз, когда пользователь перемещается по сайту). Функция dajaxice в ajax.py - это то, что захватывает файлы журнала, так что каким-то образом вызов должен быть включен в обновление.

Может ли кто-нибудь помочь мне с этим? Я боролся с этим в течение нескольких дней.

Спасибо!

ответ

0

Я смог разобраться с этим самостоятельно. Код ниже работал для меня.

ajax.py:

@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}) 

HTML:

<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>   

Я использовал dajaxice вместо прямого AJAX, который взял совсем немного возиться с, прежде чем все настройки были настроен правильно, но мне показалось проще, чем пытаться научиться интегрировать ajax и php в проект django.