【问题标题】:How to use AJAX to receive content from Python如何使用 AJAX 从 Python 接收内容
【发布时间】:2015-08-28 00:02:22
【问题描述】:

我正在尝试使用 AJAX 使用从 Python 脚本返回的数据更新表。当我使用 AJAX 请求 Python 脚本时,返回的文本是整个 Python 脚本文件,而不仅仅是 print 命令中的内容。

我的 AJAX 文件:

...standard loadXMLDoc function with callback from W3C AJAX tutorial...


function doNow()
{

loadXMLDoc("cgi-bin/get.py",function()
  {
  if (request.readyState==4 && request.status==200)
    {
    document.getElementById("active_items").innerHTML=request.responseText;
    }
  });
}

window.onload=doNow();

为简单起见,我使用的 python 文件很简单:

print("<div>something</div>")

import cgi
import cgitb
cgitb.enable(display=0, logdir="/path/to/logdir")

if __name__ == "__main__":
    print("Content-type:text/html\n\n")
    print("<div>something</div>")

当我加载页面时,&lt;div id="active_items"&gt; 的内容是:

print("
something
")

我已经:

  • 使用chmod 755 get.pyget.py 文件设置为可执行文件
  • 已验证在我的服务器上启用了 CGI 权限(即其他 .cgi 脚本有效)
  • 已验证我的 AJAX 脚本是否适用于其他静态文件,例如 .txt 文件

我确定我遗漏了一些明显的东西,但我希望得到一些帮助!

【问题讨论】:

    标签: python html ajax


    【解决方案1】:

    添加到 Python 文件的顶部(假设 *nix 环境):

    #!/usr/bin/env python
    

    如果您还没有这样做,请确保您的 Web 服务器将 .py Python 脚本视为 CGI 脚本。 Apache 的一个例子是这个指令:

      <Directory /srv/www/yoursite/public_html>
            Options +ExecCGI
            AddHandler cgi-script .py
        </Directory>
    

    【讨论】:

    • 这很棒!问:在我的一些试验中,我的 python 文件以#!/usr/bin/python 开头。为什么这不起作用,但 #!/usr/bin/env python 起作用?
    • 如果您的 Python 可执行文件不在 /usr/bin/python 中,它将无法工作。 env 使用环境来运行路径中的任何 python。在许多情况下,这比硬编码 Python 可执行文件的位置要好 - 它使您的脚本更具可移植性。
    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 2017-12-08
    • 2017-09-26
    • 1970-01-01
    • 2016-12-28
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多