从Javascript调用Python脚本,这两个本地文件

时间:2014-02-20 17:56:14

标签: javascript python ajax http scripting

我正在尝试从本地javascript文件(本地运行的HTML / javascript程序的一部分)运行python脚本。

我一直在谷歌搜索这几个小时,并找到了很多解决方案,其中没有一个真正适合我。

这是javascript:

$.ajax({

    type: "POST",
    url: "test.py",
    data: { param: " "}
    }).done(function( o ) {
        alert("OK");
});

test.py文件与脚本/ html文件位于同一文件夹中。

这是脚本:

#!/usr/bin/python
import os
filepath = os.getcwd()
def MakeFile(file_name):
    temp_path = filepath + file_name
    with open(file_name, 'w') as f:
    f.write('''\
def print_success():
    print "sucesss"        
''')
    print 'Execution completed.'

MakeFile("bla.txt");

正常运行时工作正常。

在我的Firefox控制台上,我收到“格式不正确”的错误,并且脚本不会创建文件。但是,我可以看到Firefox确实提取了脚本,因为我可以通过单击文件名在浏览器中查看它。

3 个答案:

答案 0 :(得分:5)

为了执行python脚本,必须由通过CGI或WSGI等支持它的Web服务器进行部署。

点击此处的文档:webservers

答案 1 :(得分:1)

您的代码存在三个问题。

首先,当您调用$.ajax()时,它会尝试将响应解析为JSON或HTML。要防止它,请使用dataType: "text"

$.ajax({
    type: "POST",
    url: "111212.py",
    data: { param: " "}, 
    dataType: "text"
    }).done(function( o ) {
        alert("OK");
});

其次,从javascript获取本地文件可能违反同源策略,具体取决于浏览器。请参阅:Origin null is not allowed by Access-Control-Allow-Origin

最重要的是,提取不会执行文件,它只是读取它并以字符串形式返回。

答案 2 :(得分:1)

显然,正如已经指出的那样,这不可能做到,不是这样的。因此,我将启动一个简单的CGI python服务器来为HTML文件提供服务,并执行该脚本。我已经测试过了,效果很好!