我有一个AJAX函数来发送参数并从python脚本中检索一些json对象。我尝试将输入文本中的值发送到脚本
AJAX代码
function ajax_get_json(){
var results = document.getElementById("results");
var hr = new XMLHttpRequest();
var tipo = document.getElementById('tipo').value;
var atributo = " " +tipo;
document.getElementById('texto').innerHTML = atributo;
hr.open("GET", "prov1.py", + atributo, 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...";
}
我的python脚本就是这个
#!/usr/local/bin/python2.7
import sys
import cx_Oracle
import json
import cgi
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
tipo = form.getvalue('tipo')
#print "Content-Type: text/html; charset=utf-8\n\n";
print "Status: 200 OK"
print "Content-type: application/json\n";
#print
lst_proveedores=[]
conn_str = 'user/pass@database'
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute(""" select id_proveedor, nombre, tipo from mpc_proveedores where tipo = '%s' """ %tipo)
for row in c:
record1 = {"id":row[0], "nombre":row[1], "tipo":row[2]}
lst_proveedores.append(record1)
json_string = json.dumps(lst_proveedores)
print json_string
conn.close()
在命令行中,脚本工作正常(python prov1.py tipo = MMS)并从数据库中检索数据,但是当我尝试从AJAX检索数据时,脚本会向我发送一个空的json对象。使用firebug我检查响应,只显示[]。
我认为AJAX函数有一些错误,因为看起来发送参数为空(python prov1 tipo =)。 我是AJAX的新手,不确定我是不是在AJAX中使用了正确的函数,还是在python脚本中。 如果有人知道更好的方法来检索数据,请告诉我
请帮助!!!!
答案 0 :(得分:0)
夫妻俩:
var atributo = " " +tipo;
var atributo = "?tipo=" + encodeURIComponent(tipo);
Content-Type
标头。 (GET请求永远不会有请求主体。)不会破坏任何东西,但你应该把它拿出来。祝你好运!