刷新弹出窗口

时间:2015-07-08 17:14:12

标签: javascript json dajaxice

我正在使用Django创建一个网站,我想要一个显示日志消息的弹出窗口,并且每隔N秒会自动刷新一次。我使用标准的python记录器,javascript和Dajaxice作为我的弹出窗口。

我坚持如何让弹出窗口自动刷新,并且需要使用在Dajaxice函数中检索的日志文件内容。

我的ajax.py看起来像这样:

import json, SIMPLCode, logging, os, sys
from dajaxice.decorators import dajaxice_register

@dajaxice_register(method='GET')
def getLogs(request):
  fname = "SIMPLCode/Logs/LOG_2015-07-08.log"
  with open(fname,"r") as f:
    lines = f.readlines()
  lines = lines[-10:]
  return json.dumps({'logLines':lines})

我建议的Django HTML看起来像这样

<button class="btn btn-primary" onclick="Dajaxice.InterfaceApp.getLogs(popitup())">{% bootstrap_icon "share-alt" %} View Log File </button>

建议的JS看起来像这样

function popitup(data) {
    $(document).ready(function(data) {
      var log_file = data.logLines;
      var newwindow=window.open('','Log Viewer','height=300,width=500');
      newwindow.write(log_file)
    });

    if(newwindow && !newwindow.closed){
      newwindow.location.reload(true); 
      newwindow.focus();
    } 
  }

我尝试了这个但是收到的错误是我的dajaxice函数中的数据没有定义:

未捕获的TypeError:无法读取属性&#39; logLines&#39;未定义的

然而,当我这样称呼它(作为一个简单的警报窗口)时,它可以工作:

<input id="LogMessages" type="button" value="View Log Messages" onclick="Dajaxice.InterfaceApp.getLogs(function(d){alert(d.message);})"/>

我是JS和dajaxice的新手,并且没有很多在线可用于dajax。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

问题出在我的称呼方式上。正确的方法如下:

<button class="btn btn-primary" onclick="Dajaxice.InterfaceApp.getLogs(popitup)">{% bootstrap_icon "share-alt" %} View Log File </button>

()

的呼叫背后不应该popitup