【问题标题】:Webpy and javascript to reload contentWebpy 和 javascript 重新加载内容
【发布时间】:2015-10-18 06:00:39
【问题描述】:

您好,我从 web.py 开始,还有很多我不明白的地方。 这个真的很烦人。 我尝试使用 web.py 和 javascript 做一个简单的页面。 这个想法是在 div 上显示一个随机值,该值由 python 函数每秒更新一次。 这是我正在使用的代码:

import web
import random

def rnd():
return random.randint(0, 10)

render = web.template.render('templates', globals={'rndm':rnd})

urls = (
    '/mhs(.*)', 'mhs',    
    '/(.*)', 'index',
    )
app = web.application(urls, globals())

class reloader:
    def GET(self):
        return render.reloader(rnd)

class index:
    def GET(self, name='Bob'):
        return render.index(name)

if __name__ == "__main__":

app = web.application(urls, globals())
app.run()

然后是reloader.html文件:

$def with(rnd)
<!DOCTYPE html>
<html>
<head> 
    <meta charset="utf-8"/>
</head>
<body>
<div id='demo'>Status: ? </div>

<script type="text/javascript">

    function UpdateLeds() {
        var x = document.getElementById('demo');
        x.innerHTML = "Status: $rndm()";
    }

    setInterval(UpdateLeds, 1000);
</script>
</body>
</html>

我希望代码显示一个页面,其中随机数在 0 到 10 之间,每秒刷新一次。 然而,我能得到的只是一个显示静态值的页面(即:rnd 获得的第一个随机数)。 但是,如果我手动刷新页面,则值会按预期更新。 我不明白问题出在我的代码中还是在我对架构的理解中。有人可以帮帮我吗?

【问题讨论】:

    标签: javascript web.py


    【解决方案1】:

    如果我将您的 javascript 函数更改为此,它适用于我:

    function UpdateLeds() {
        var x = document.getElementById('demo');
        var random = Math.floor((Math.random() * 10) + 1);
        x.innerHTML = "Status: "+random;
    }
    

    我不确定您要在 HTML 中使用 $def with(rnd) 来做什么。我认为您可能正在混合 web.py python 和 javascript 语法(只是猜测),但是一旦页面在浏览器中呈现,python 对您没有任何好处,您必须使用纯 javascript 做您想做的事情.

    这是一个 JSFiddle:https://jsfiddle.net/s7n6nxng/

    【讨论】:

    • 我用纯 JS 试过了,正如你所说,它可以工作。但是,我想用 python 函数的结果更新 demo id 的值,以显示一些 LED 状态(正如函数名称所暗示的那样)。因此我认为 web.py 是一个不错的选择。
    • 你不能像这样在 JS 中调用 python 函数。像这样的 Javascript 在客户端(在浏览器中)运行,而 python 在服务器端运行。如果你想使用 python 函数,你要么编写一个每秒刷新页面的 javascript 函数(因此调用服务器),要么使用 AJAX 之类的东西对服务器进行独立调用你可以得到函数的结果并插入到页面中。
    • 啊,谢谢,这让事情变得更清楚了。我会试试 AJAX!
    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多