将参数从javascript传递给python脚本

时间:2014-08-01 21:26:33

标签: javascript python html ajax

我有一个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 :(得分:0)

要从Apache运行Python代码,您需要使用适当的接口。有许多可能性,但 CGI mod_wsgi 是很受欢迎的选择。 Python docs有很多关于如何设置它的有用信息。

答案 1 :(得分:0)

我认为你真正想要的是web framework

这将提供一种结构化的方法,准确地说明你正在尝试做的事情。

django非常棒且非常受欢迎。金字塔和烧瓶也很受欢迎。

我对Flask有很多经验并且强烈推荐。