【问题标题】:Access Ajax data in python在 python 中访问 Ajax 数据
【发布时间】:2014-10-12 13:21:49
【问题描述】:

我是 python 的新手,正在使用 Python 来获取 来自 AJAX 调用的请求,但我正在获取 python 的代码,因为它在 AJAX 中我不想要的输出

AJAX 代码:

$.ajax({
        type: "POST",
        url: "hello.py",
        datatype : "json",
        data: { name: "nitin"}
      })
      .done(function(msg) {
           console.log(msg);
           $("div").html("Data : "+msg)
});

Python 代码:

import sys
import cgi

sys.stdout.write("Content-Type: application/json")
sys.stdout.write("\n") 
sys.stdout.write("\n")

form = cgi.FieldStorage()

sys.stdout.write(json.dumps({ 'data': form.getvalue('name')}))

输出: Data : import sys import cgi sys.stdout.write("Content-Type: application/json") sys.stdout.write("\n") sys.stdout.write("\n") form = cgi.FieldStorage() sys.stdout.write(json.dumps({ 'data': form.getvalue('name')}))

预期输出应为:

Data : Content-Type: application/json

nitin

【问题讨论】:

  • 您是否已将 Web 服务器配置为将 Python 触发视为 cgi?你为什么首先使用 cgi?
  • 对不起先生.. 我不知道配置 Web 服务器以将 Python 火灾视为 cgi。没明白你为什么首先使用 cgi?.
  • 我已在本地 Web 服务器 (apache) 的 .htaccess 文件中添加了 Options +ExecCGI AddHandler cgi-script .py 这些行。添加后,python 脚本现在可执行,但无法在 AJAX 中获得 python 的响应。

标签: python ajax json cgi sys


【解决方案1】:

您的 python 脚本是否标记为可执行?见this-

“Python 脚本未标记为可执行。当 CGI 脚本不可执行时,大多数 Web 服务器将让用户下载它,而不是运行它并将输出发送给用户。为了 CGI 脚本在 Unix 上正常运行-像操作系统一样,需要设置 +x 位,使用 chmod a+x your_script.py 可以解决这个问题。”

还有一个示例可以测试您的服务器是否支持 CGI -

https://docs.python.org/2/howto/webservers.html#simple-script-for-testing-cgi

【讨论】:

  • 是的。我的 python 脚本被标记为可执行文件。在运行它之前,我已经完成了 chmod +x /path-to-localhost/hello.py。任何其他帮助。请
  • 我已在本地 Web 服务器 (apache) 的 .htaccess 文件中添加了 Options +ExecCGI AddHandler cgi-script .py 这些行。添加后,python 脚本现在可以执行,但无法在 AJAX 中获得 python 的响应。
【解决方案2】:

/home/*/public_html 下的 .htaccess 文件中添加以下 2 行。

Options +ExecCGI 
AddHandler cgi-script .py

Python代码应该是这样的:

import sys
import cgi
sys.stdout.write("Content-Type: application/x-www-form-urlencoded")
sys.stdout.write("\n") 
sys.stdout.write("\n")
form = cgi.FieldStorage()
name = form.getvalue('name')
print name

因为 content-type 是 application/x-www-form-urlencoded 而不是 application/json。我们正在获取表单值。如果想查看内容类型只需print form.headers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多