单击javascript中的按钮运行python脚本

时间:2016-03-27 21:54:56

标签: javascript jquery python ajax

我想要的是运行python脚本只需单击html页面中的按钮并在我的页面上显示python代码结果。

因为它只是一个小项目,所以即使我知道它会起作用,我也不想过度学习Django或其他网页框架。

我进行了一些搜索,ajax对我来说似乎是正确的解决方案,但我不知道如何通过ajax执行python代码。我知道我可以使用以下代码通过ajax获取一些字符串:

function loadXMLDoc()
{
    var xmlhttp;
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","test1.txt",true);
    xmlhttp.send();
}

提前感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:1)

要扩展@ Liongold的评论,完整的工作流程如下:

发生这种情况的概述

  • 执行按钮点击的javascript代码。此代码在浏览器的客户端上运行。
  • AJAX请求通过互联网发送,就像HTTP请求一样,由运行Python代码的计算机上运行的Web应用程序解释。
  • python代码创建一个响应,并将其格式化以便发送回客户端。
  • javascript以纯文本形式读取响应,并确定其含义以及如何使用它。 JSON是一种非常流行的通过AJAX交换数据的格式

您需要做什么

或者:

  1. 学习服务器端python框架。 Flask是轻量级的,可能会做你想要的。我在这里发现的最大障碍是处理跨源(CORS)问题。开始使用http://flask.pocoo.org/docs/0.10/quickstart/
  2. OR

    1. 看看你是否可以将python脚本移植到浏览器中。代码是否需要在特定计算机(服务器)上运行,或者理论上是否可以转换为javascript并在网页中运行。如果语言差异是您唯一的问题,请查看http://www.skulpt.org/

答案 1 :(得分:0)

我遇到了类似的问题,经过几个小时的搜索,我就是这样解决的。假设html文件和python文件是同一个文件夹。



<script>
function runScript() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState === 4) {
            if (request.status === 200) {
                alert('Successful .... ' + request.responseText);
            } else {
                alert('Something went wrong, status was ' + request.status);
            }
        }
    };
    request.open('POST', 'test.py', true);
    request.send(null);
    return false;  
};

document.getElementById('script-button').onclick = runScript;
</script>
&#13;
This goes to your html file
-----------------------------
<button type="button" id="script-button">
  
  add this line at the top of your python file
  ---------------------------------------------
  
  test.py
  ------------
  
  #!C:\Python34\python.exe -u
  print("Testing 123")
  
  add this directive to httpd.conf (Apache)
  -----------------------------------------
  
  # "C:/xampp/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "C:/xampp/<path to your project on the web server>">
    AllowOverride All
    Options Indexes FollowSymLinks Includes ExecCGI
    AddHandler cgi-script .py .pyc
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
&#13;
&#13;
&#13;