0

我在网络编程方面没有太多经验,所以我将尝试简单地解释这个问题。

这是由 CherryPy (cherrypy.quickstart(SLA_App())) 运行的类的主要方法:

class SLA_app(Object):
    def index(self):
       global files;
       files=[...]
       createTable.createTable(files, '20/06/2012', '03/07/2012')
       cherrypy.tree.mount(SLA_App(), '/', 
        config = { '/': { 'tools.staticdir.on' :True,
       'tools.staticdir.dir' : 'some/dir',
       'tools.staticdir.index' : 'cherry.html' } 
        })
        return open('cherry.html')
    index.exposed = True

我创建了一个 CherryPy 服务器。每次加载主页时,都需要执行一个方法。该方法在某个文件中生成 HTML 代码。它在 createTable.createTable(files) 中完成。说,它创建了 insert.html 。正在加载的主页有 jquery 方法,该方法将文件的代码加载到一些文件中,最后得到包含所有内容的结果页面。

现在,每当有人进入页面时,我都希望执行该方法。问题是它只在服务器起点有效。每次人们进入页面时,它都会加载旧文件(不会调用方法)。每次加载页面时如何使其工作?

4

2 回答 2

1

您对 cherrypy.tree.mount 的调用不应在 index 方法中完成(尽管我认为这不是您唯一的问题)。

class SLA_app(Object):
    def index(self):
       global files;
       files=[...]
       createTable.createTable(files, '20/06/2012', '03/07/2012')

       return open('cherry.html')
    index.exposed = True

cherrypy.tree.mount(SLA_App(), '/', 
    config = { '/': { 'tools.staticdir.on' :True,
   'tools.staticdir.dir' : 'some/dir',
   'tools.staticdir.index' : 'cherry.html' } 
    })

我不确定您的 createTable 做了什么,但如果必须完成一次,也可以从该索引方法中提取它。另请注意,使用 staticdir 工具时,您的 dir 路径必须是绝对路径。请阅读文档的这一部分

最后,您的配置似乎覆盖了 index 方法本身,因为两者都会响应 /。

于 2012-08-08T07:13:11.587 回答
0

最后我解决了这个问题。问题是每次网络启动时,它都应该向服务器发送请求,接收答案并动态构建页面。这可以通过 Ajax 来完成。由于我使用 jQuery,$.post 方法在处理中非常有用。

对于所有新手,就像我一样,我建议阅读 David Sawyer McFarland 的“JavaScript and jQuery: The Missing Manual”。祝你好运!

于 2012-08-08T13:47:16.683 回答