web2py中的定时LOAD()无法正常工作

时间:2014-02-07 21:35:55

标签: web2py

之前我没有尝试过LOAD(),但是我无法让它工作。我目前正在使用web2py2.8.2并使用内置服务器在localhost上进行测试。

这是我的简化示例


在default.py中,我有

@auth.requires_login()
def monitor_manage():
    """ Controller for Monitor page """
    return dict()

@auth.requires_login()
def statehouse_poll():
    """ Controller for Monitor page """
    import time
    return dict(state=dict(timestamp=time.time()))

默认/ monitor_manage.html

{{extend 'layout.html'}}

<h2>Monitor System Status</h2>
<p>Live monitoring of system state.

</p>
<div id="statehouse_component">
</div>
{{=LOAD(c='default', f='statehouse_poll.load', ajax=True,
         target="statehouse_component",
         user_signature=True,
         timeout=2000, times=100) }}

默认/ statehouse_poll.load

{{=state}}

如果我浏览到default / statehouse_poll,我会得到预期的结果,例如

 timestamp  : 1391807454.990959

但浏览到默认/ monitor_manage只显示

loading...

检查响应html显示web2py正在发送

<div data-w2p_remote="/arm_app/default/statehouse_poll.load?_signature=4addc7e2cd96daa1fbc88c233b163838d880c8c3" data-w2p_timeout="2000" data-w2p_times="100" id="statehouse_component">loading...</div>

我做错了什么?

编辑!:我在Massimo的web2py组中发现了一条消息,建议从欢迎应用程序复制web2py.js文件以修复LOAD()的问题。这样做了,但对我的情况没有影响。

EDIT2:Per Anthony的建议我在Chrome DevTools中寻找错误。每隔2秒发现以下重复出错。

Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} has no method 'parseHTML' web2py.js:382
$.web2py.web2py.updatePage web2py.js:382
$.ajax.complete web2py.js:311
n jquery.js:2
o.fireWith jquery.js:2
w jquery.js:4
d

2 个答案:

答案 0 :(得分:0)

- 我能够通过用web2py2.8.2附带的更新版本(1.10.2)替换应用程序的旧版jquery.js(1.7.1)来解决ajax问题。这提供了较新的web2py.js所需的parseHTML()函数,并且定时的LOAD现在按预期运行。

这样做会造成superfish.js的次要问题,因为它通过检查在版本1.9中不推荐使用并从jQuery中删除的browser.msie来测试MSIE。更新到最新的超级鱼修复了。

我现在暂时接受我自己的答案,希望web2py团队的某个人能够建议更自动化的迁移策略,以便在旧的web2py应用程序中更新客户端依赖关系。

答案 1 :(得分:0)

我遇到了类似的问题,在使用 LOAD() 时,我在呈现的页面中只得到“...loading”,而不是应该加载的部分。就我而言,问题源于未使用 layout.html,因为我在其位置构建了替代 base.html。我的 base.html 没有包含 web2py 的 'web2py_ajax.html'——它在 layout.html 的 head 部分作为 {{include 'web2py_ajax.html'}} 找到。当我将它包含在我的 base.html 中时,问题就解决了。我相信 web2py_ajax.html 包含 web2py 依赖于 LOAD() 的 javascript。

我怀疑此建议不会帮助解决此线程的具体问题,但可以帮助人们解决类似问题。