开发者社区> 问答> 正文

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

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

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

Python脚本设置为CGI并具有sudo访问权限,因此它们检索这些文件没有问题。但是,如果我想使用AJAX之类的东西来调用Python脚本,是否有任何方法可以在不使用REST框架(例如Flask或Django)的情况下返回数据?该应用程序必须是轻量级的,并且最好不要依赖新的框架。

我可以用香草JavaScript和Python做到这一点吗?

展开
收起
祖安文状元 2020-02-23 16:05:59 873 0
1 条回答
写回答
取消 提交回答
  • 好的,所以解决方案非常简单,我只是犯了一些语法错误,导致它在尝试几次后就无法使用。

    因此,请求看起来像这样:

    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()
    
    

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

    2020-02-23 16:06:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript函数 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载