在python中访问Ajax数据

时间:2014-10-12 13:21:49

标签: python ajax json cgi sys

我是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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

/ 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

因为内容类型是application / x-www-form-urlencoded而不是application / json。我们正在获得形式价值。如果想要查看内容类型,只需 print form.headers