从JavaScript传递参数到Python脚本

0 投票
2 回答
1558 浏览
提问于 2025-04-18 15:42

我有一个Python脚本,通过它我可以传递一个参数来在Oracle数据库中执行查询。

prov.py

#!/usr/local/bin/python2.7
import sys
import argparse
import cx_Oracle
import json
import cgi
import cgitb
cgitb.enable()

lst_proveedores=[{}]
conn_str = 'user/pass@DATABASE'
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
qstr = qstr = """ select id_proveedor, nombre, tipo from mpc_proveedores where tipo = '%s' """ %sys.argv[1]
c.execute(qstr)
for row in c:
    record1 = {"id":row[0], "nombre":row[1],"tipo":row[2],"tipo":row[2]}
    lst_proveedores.append(record1)
json_string = json.dumps(lst_proveedores)
print json_string
conn.close()

我需要把数据展示在一个HTML页面上。

index.html

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function ajax_get_json(){
    var results = document.getElementById("results");
    var hr = new XMLHttpRequest();
    hr.open("GET", "prov.py", true);
    hr.responseType = "JSON";
    hr.setRequestHeader("Content-Type", "application/json", true);
    hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                    var data = JSON.parse(hr.responseText);
                        results.innerHTML = "";
                        for(var obj in data){
                                results.innerHTML += 
                                "<tr><td>"+data[obj].id+"</td><td>"+data[obj].nombre+"</td><td>" +data[obj].tipo+"</td></tr>";
                        }
            }
    }
    hr.send(null);
    results.innerHTML = "requesting...";
}
</script>
</head>
<body>
<div class="container">
<div class+"row">
<table  id="results" class="table table-bordered table-striped table-hover">
    <tr>
        <td>Id Proveedor</td>
        <td>Nombre</td>
        <td>Tipo</td>
    </tr>
<script type="text/javascript">ajax_get_json();</script>
</table>
</div>
</div>
</body>
</html>

我该如何通过一个按钮来执行这个脚本,并且如何把输入框中的值传递给JavaScript?

另外,我知道我的JavaScript设计得不好,有什么建议吗?

2 个回答

0

要在Apache服务器上运行Python代码,你需要使用合适的接口。其实有很多种选择,但CGImod_wsgi是比较常用的两种。你可以查看Python文档,里面有很多关于如何设置这些接口的有用信息。

0

我觉得你真正想要的是一个网络框架

这个框架可以帮助你更有条理地处理你想做的事情。

Django非常棒,而且很受欢迎。Pyramid和Flask也都很流行。

我对Flask有不少经验,强烈推荐它。

撰写回答