【问题标题】:Calling a local python script from javascript [closed]从javascript调用本地python脚本[关闭]
【发布时间】:2014-02-21 18:26:14
【问题描述】:

我有以下要求:

1.需要从javascript调用驻留在本地的python脚本。它会执行一些操作并返回一个xml文件。

2.然后我需要将xml文件返回到javascript。

3.javascript会进行xml的解析,并在HTML中显示值。

您能否就如何执行第 1 步和第 2 步给我一些指导?我已尝试找到答案,但没有明确的解决方案。

谢谢, 萨彦

【问题讨论】:

  • afaik 从外部获取数据的唯一方法是进行 ajax 调用,因此您需要通过网络服务器或其他方式为 python 提供服务......我认为您不能通过 javascript 执行文件(这将是一个巨大的安全漏洞)
  • 您是否也在本地加载页面?你可以只运行一个本地网络服务器。
  • 所以我可以通过 ajax 调用从 javascript 调用 python 脚本?
  • 开发完成后,页面最终会驻留在服务器中。所以运行本地网络服务器并不能解决问题
  • 我正在对驻留在外部域中的地理服务器进行 http 调用。每当我通过 javascript 进行此调用时,它都会给我错误“XMLHttpRequest 无法加载weaveprod.ucdp.utah.edu/geoserver/…。没有'访问控制-请求的资源上存在 Allow-Origin' 标头。因此,不允许访问 Origin 'localhost:63342'。"

标签: javascript python html


【解决方案1】:

您的浏览器不能(并且知道如何)执行 Python 函数/modules。
你想要的是制作一个AJAX request。基本上,您需要在 Python 函数前面放置一个 Web 服务器,然后在调用某个 URL 时返回函数的结果,这里是您的 XML 文件。
有很多轻量级的 web 框架可以帮助你设置一个快速的 web 服务器来做到这一点。例如,Flask。这是一个完全受 Flask 主页启发的示例:

from flask import Flask
from yourmodule import function_that_return_xml
app = Flask(__name__)

@app.route("/")
def hello():
    xml = function_that_return_xml()
    # make fancy operations if you want
    return xml

if __name__ == "__main__":
    app.run()

然后,在这里你可以调用http://localhost:5000(默认地址,如果你想让其他用户使用它可以在线)来获取你的XML文件。

【讨论】:

  • 所以,基本上我使用flask制作这个代理网络服务器,它调用主地理服务器并获取xml。然后对这个代理网络服务器进行AJAX调用并在javascript中获取xml文件,以显示在HTML中???
猜你喜欢
  • 2016-03-02
  • 2017-09-25
  • 1970-01-01
  • 2012-12-17
  • 2019-10-21
  • 2014-10-20
  • 1970-01-01
  • 2021-12-23
  • 2014-06-25
相关资源
最近更新 更多