Ajax.Updater和python响应请求

时间:2014-03-28 10:33:03

标签: javascript ajax json python-2.7 prototypejs

我有一个使用模板生成HTML页面的python代码。当发生单击事件时,我需要读取Excel文件并显示一些结果,可能是在弹出窗口中。我以为我可以使用xlrd读取Excel文件。我可以使用ajax request来提供读取excel文件的python文件的url。我决定使用Prototype的{​​{1}}。

Ajax.Updater应该用来自python文件Ajax.Updater的响应替换response项。

我有两个问题 -

  1. 我们如何从python发回响应?这可能是一个微不足道的问题,但我找不到解释这一部分的任何地方。我是否写了一个函数并且display.py表示响应值?或者使用return?或者我应该使用print?我是新手,我不明白这是如何工作的。这里有很多问题表明sys.stdout.write()被使用了。我应该用吗?你能解释为什么需要吗?(我是初学者,对不起,如果这听起来很愚蠢)

  2. 有没有更好的方法来实现我的目标?

  3. 代码如下所示:

    json

    我的python文件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') 看起来像这样

    display.py

    我的平台是windows。我正在使用新版本的Prototype(1.7.1)。

    由于

    Megh

1 个答案:

答案 0 :(得分:1)

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

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

您可以使用print;它会为你添加行分隔符:

print "Content-type: text/html"
print
response = "dadada"
print response + '</br>'

如果您未与CGI脚本结婚,请尝试使用Flask,Bottle或Pyramid等微型Web框架;这些将为您处理大部分HTTP细节。