如何通过Node JS从Python调用和检索结果?

时间:2017-11-25 06:01:57

标签: javascript python node.js

您好我想调用Python代码(代码名称是match.py​​)并通过HTML / Javascript检索其结果(我正在使用Node JS)。我现在拥有的是:

                    <div class="panel-body">

                        <form role="form" method="POST" action="new">

                        <button type="find" id="find" onclick="match()" class="btn btn-default">Find Match</button>

                        <script>
                        $(function() {
                            $('find').click(function() {
                                $.ajax({
                                    url: '/Users/reinapark/Downloads/match17/match.py',
                                    data: $('form').serialize(),
                                    type: 'POST',
                                    success: function(response) {
                                        console.log(response);
                                        $("#div1").html(response);
                                    },
                                    error: function(error) {
                                        console.log(error);
                                    }
                                });
                            });
                        });

                        </script>

                        </form>

                    </div>

我的问题是: 1.如何将数据发送到Python代码? 2.#div1在这做什么?

对不起,如果问题没有意义 - 我是一个Python / Node JS初学者,不太清楚我在做什么!!

2 个答案:

答案 0 :(得分:1)

您的代码显示了一些HTML,其中包含一些产生Ajax请求的JavaScript代码。它与NodeJS无关。

另一方面,NodeJS是用于在服务器端执行JavaScript代码的JavaScript运行时环境。

因此,您的代码在客户端(在浏览器中)执行,并向服务器发送Ajax请求,以异步方式从服务器获取一些数据,并使用新数据刷新网页的一部分,而无需刷新整个页面

关于你的问题:

  1. 您的代码无效,因为您正试图通过此行(url: '/Users/reinapark/Downloads/match17/match.py',)获取本地文件。这是不可能的,因为由于安全风险,浏览器无法以这种方式访问​​本地文件。因此,您必须在服务器上运行您的python代码,为要获取的数据创建一个接口(例如,通过创建Web服务),并在尝试时使用JavaScript Ajax调用从服务器获取该数据。
  2. 查看RESTful web services

    1. 第一个div只代表HTML页面的一部分。它将HTML元素组合在一起。您的div还定义了 class 属性,可以在JavaScript中使用它来获取特定的div:

      document.getElementsByClassName(&#34;面板体&#34);

    2. 或将一些CSS设置为该类的所有HTML元素。例如,在你的.css文件中:

       .panel-body {
             width: 500px;
             margin: auto;
             border: 3px solid #73AD21;
          }
      

      $('#div1')jQuery代码,用于获取ID为&#39; div1&#39;的元素。这与在纯JavaScript中键入document.getElementByID('div1')相同。

      `$('#div1').html(response)` changes the html of that div to the response received.
      

答案 1 :(得分:0)

好的,所以我根据我的理解和我认为您想要检索脚本/Users/reinapark/Downloads/match17/match.py

的结果回答

因此,您无法从浏览器访问match.py​​的结果,您需要像apache, nginx这样的Web服务器在服务器端运行它,以后可以通过javascript访问它。

我建议你开始研究如何在网络服务器上运行python程序,你会在google上获得很多教程。

现在提出第二个问题。

                                $("#div1").html(response);  what does this do ?

实际上它是javascript代码#代表html语句的代码

如下所示代码id是find

                 <button type="find" id="find" onclick="match()" class="btn btn-default">Find Match</button>

代表id而不是。代表类

所以基本上当你这样做时

$("#div1").html(response);

你要将你在url中提到的地址的响应添加到id为div1的html元素

我希望这可以帮助您从

开始