从 AJAX 或 JQuery 运行 Python 脚本
Posted
技术标签:
【中文标题】从 AJAX 或 JQuery 运行 Python 脚本【英文标题】:Run Python script from AJAX or JQuery 【发布时间】:2014-10-09 19:05:17 【问题描述】:我们需要从 javascript 运行 python 脚本。我们必须将输入字符串作为参数传递给 Python 脚本,并将 Python 输出显示到我们的网页上。
这是 Python 代码,当我在我的 linux 机器中运行此代码时,此代码可以正常工作:./sample.py 12345
,给出输出 12345
和 ./sample.py
将显示 no argument found
#!/usr/bin/env python
import os
import sys
if len(sys.argv) > 1:
output = sys.argv[1]
else:
output = "no argument found"
print "Hello World!!!"
print output
如何从上述 python 的 ajax 调用中访问“参数”,并将该值用作参数?
Javascript:
$.ajax(
type: 'POST',
url: "scripts/sample.py",
data: param: xyz, //passing some input here
dataType: "text",
success: function(response)
output = response;
alert(output);
).done(function(data)
console.log(data);
alert(data);
);
任何帮助将不胜感激。
编辑
按照建议,我正在尝试使用 CGI 让我的代码正常工作。
#!/Python34/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
data= cgi.FieldStorage()
# Get data from fields
output = data["param"]
# This will print to stdout for testing
print("Hello World!!!")
print(output)
每当运行 Ajax 调用时,响应为:[object htmlDivElement],在 Firebug 中打开时会显示 Python 脚本的整个文本。我在这里错过了什么?
【问题讨论】:
你需要你的 python 接受 http 请求,而不是控制台解释 如何将参数值从 Ajax 获取到 Python 中?如果我的问题太“基本”,请道歉。 您要么需要设置一个小型网络服务器(使用 Flask 或 Django 之类的东西),要么可能使用 cgi 之类的东西来获取 post 参数。 你应该让你的服务器执行python脚本,阅读这个文档docs.python.org/2/howto/webservers.html @snotwaffle 我按照您的建议添加了答案。谢谢。 【参考方案1】:您的 Ajax 调用将是对 Python 脚本的 Web 请求 (http)
,因此您的 Python 脚本需要在端口上侦听此类请求并做出响应。
建议使用上述方法,在您的示例中使用简单的web server,py 或者您可以使用现有的方法,例如 Flask(或许多其他方法)。
仅供参考 - 对于您的简单任务,我不推荐 Django(它是一个大而重的 Web 框架,有很多您不需要的铃铛)。
【讨论】:
【参考方案2】:从字段中获取数据应该如下完成:
# Get data from fields
output = data.getvalue("param")
另外,我意识到在尝试执行时存在 ^M 个字符问题,我使用 vi
编辑器解决了这个问题。
【讨论】:
【参考方案3】:在完全透明的情况下,我是这个 GitHub 存储库的贡献者。我能够使用 WayScript AJAX 触发器解决这个问题:
有关说明,请参阅 GitHub 存储库:https://github.com/wayscript/ajax-to-python-example
【讨论】:
以上是关于从 AJAX 或 JQuery 运行 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章