Javascript 更新程序和python对请求的响应

Javascript 更新程序和python对请求的响应,javascript,ajax,json,python-2.7,prototypejs,Javascript,Ajax,Json,Python 2.7,Prototypejs,我有一个python代码,它使用模板生成HTML页面。当单击事件发生时,我需要读取Excel文件并显示一些结果,可能是在弹出窗口中。我想我可以使用xlrd读取Excel文件。我可以使用ajax请求给出读取excel文件的python文件的url。为此,我决定使用Prototype的Ajax.Updater Updater应该用python文件display.py中的响应替换response项 我有两个问题- 我们如何从python返回响应?这可能是一个微不足道的问题,但我找不到任何地方解释这一部

我有一个python代码,它使用模板生成HTML页面。当单击事件发生时,我需要读取Excel文件并显示一些结果,可能是在弹出窗口中。我想我可以使用
xlrd
读取Excel文件。我可以使用
ajax请求
给出读取excel文件的python文件的
url
。为此,我决定使用
Prototype
Ajax.Updater

Updater应该用python文件
display.py
中的响应替换
response

我有两个问题-

  • 我们如何从python返回响应?这可能是一个微不足道的问题,但我找不到任何地方解释这一部分。我是否编写函数并
    返回该响应值?或者使用
    打印
    ?还是应该使用
    sys.stdout.write()
    ?我是这方面的新手,我不明白这是怎么回事。这里有很多问题显示了正在使用
    json
    。我应该用它吗?你能解释一下为什么需要它吗?(我是初学者,如果这听起来很愚蠢,我很抱歉)

  • 有没有更好的方法来实现我的目标

  • 代码如下所示:

    myprog.py
    
    from string import Template
    import webbrowser
    
    template1 = Template(
    """
    <html>
    <head>
        <script type = "text/javascript" src = "\javascript\prototype.js">
        </script>
        <script>
    
        function displayResults()
        {
            new Ajax.Updater("response", "\display.py");
        }
        </script>
    </head>
    <body>
    <table>
    <tr>
    <td id = "myid" onclick = displayResults()> $something</td>
    </tr>
    </table>
    <p id = "response">replace this</p>
    </body>
    </html>
    """)
    
    d = template1.substitute(something = nothing)
    f= open('filename.html','w')
    f.write(d)
    f.close()
    webbrowser.open_new('filename.html')
    
    我的平台是windows。我正在使用Prototype的新版本(1.7.1)

    谢谢


    Megh

    您需要在标题后写入行分隔符:

    import sys
    sys.stdout.write("Content-type: text/html\n\n")
    response = "dadada"
    sys.stdout.write(response)
    sys.stdout.write("</br>")
    

    如果你还没有和CGI脚本结过婚,那就试试烧瓶、瓶子或金字塔之类的微网络框架吧;这些为您提供了大部分HTTP详细信息。

    我现在正在使用
    print
    ,但单击时仍然没有任何事情发生。根据文件,我没有将
    display.py
    存储在“\www\cgi-bin”中。那有什么影响吗?我应该制作一些配置文件以使其工作吗?你能在浏览器中访问
    /display.py
    URL吗?发生了什么?是的,我能到达。浏览器显示.py文件的内容。现在,当我运行程序并单击事件发生时,旧内容将消失,但没有在其位置显示任何
    “dadada”
    。CGI不会执行;确保设置了可执行标志。
    import sys
    sys.stdout.write("Content-type: text/html\n\n")
    response = "dadada"
    sys.stdout.write(response)
    sys.stdout.write("</br>")
    
    print "Content-type: text/html"
    print
    response = "dadada"
    print response + '</br>'