从AJAX或JQuery运行Python脚本

2024-05-05 05:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我们需要从Javascript运行python脚本。我们必须将输入字符串作为参数传递给python脚本,并在web页面上显示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调用访问'param',并将该值用作参数?

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脚本的整个文本。我错过了什么?


Tags: sampleno代码pyimport脚本outputdata
3条回答

从字段中获取数据的操作如下:

# Get data from fields
output = data.getvalue("param")

另外,意识到在尝试执行时存在^M个字符的问题,我使用vi编辑器解决了这个问题。

Ajax调用将是对python脚本的web请求(http),因此python脚本需要监听端口上的此类请求并作出响应。

建议使用上述方法,在样品py中使用简单的web server,或者可以使用现有的方法,如烧瓶(或许多其他方法)。

仅供参考-对于您的简单任务,我不建议使用Django(它是一个大而重的web框架,有很多您不需要的功能)。

在完全透明的情况下,我是这个GitHub回购协议的贡献者。我使用WayScript AJAX触发器解决了这个问题:

有关说明,请参阅GitHub Repo:https://github.com/wayscript/ajax-to-python-example

相关问题 更多 >