没有REST框架的Linux中的JavaScript / Python交互?

问题描述 投票:0回答:1

我正在对需要从/ proc下的某些文件中检索信息的页面进行一些更改,以便页面可以向用户显示版本信息。目前,该页面完全由Python脚本生成,这使我可以只读取文件并在创建时将所有内容放入页面中。

但是,这导致了上载新版本软件时版本号不会更新的问题。我不希望每次安装新软件包时都重新生成页面,因此我将主页面设置为静态,而只是从Python脚本中查询信息并将其返回到页面以在加载时填充页面。

Python脚本设置为CGI并具有sudo访问权限,因此检索这些文件没有问题。但是,如果我想使用像AJAX这样的东西来调用Python脚本,有没有什么方法可以在不使用Flask或Django等REST框架的情况下返回数据?应用程序需要是轻量级的,并且最好不依赖于新的框架。

有没有办法用vanilla JavaScript和Python做到这一点?

javascript python ajax linux apache
1个回答
0
投票

好的,所以解决方案相当简单,我只是做了一些语法错误导致它在我尝试它的前几次没有工作。

所以请求看起来像这样:

window.onload = function() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if((this.readyState == 4) && (this.status == 200)) {
            var response = JSON.parse(this.responseText);
            // Do stuff with the JSON here...
        }
    };
    xhr.open("GET", scriptURL, true);
    xhr.send();
}

从那里,Python脚本只需要做这样的事情来返回包含我的版本号的JSON数据:

import sys, cgi, json
result = {}
result['success'] = True
result['message'] = "The command completed successfully"
d = {}
... write version information to the 'd' map ...
result['data'] = d
sys.stdout.write("Content-Type: text/plain\n\n")
sys.stdout.write(json.dumps(result))
sys.stdout.write("\n")
sys.stdout.close()

我永远找到的最持久的问题是我在脚本标签中忘记了一个右引号,这导致整个页面无法加载。

© www.soinside.com 2019 - 2024. All rights reserved.