我必须在表单中输入2个输入字段和2个相应的提交btns。当用户单击btn1时,表(table1)显示有关input1的信息(查询链接到js文件,该文件处理ajax调用display table1 - mysql查询由cgi python脚本运行 - ,信息作为JSON文件)。我对input2也有同样的设置。两个信息都是独立处理的。而这部分正在发挥作用。但是现在我想使用input1作为过滤器来搜索mySQL查询中的input2信息。我最初认为通过插入我可以在我的CGI脚本中为serach2获取input1的值:
var field1=getvalue(#input1)
但这不起作用。所以当我处理search2的ajax调用时,我可能需要在我的js文件中引用input1。 这里是我的search2功能:
unction runSearch2( term) {
$('#table2').empty();
$('#table1').empty();
// here i used .serialize for input2
var frmStr = $('#form2 input').serialize();
$.ajax({
url: './cgi_temp2.cgi',
dataType: 'json',
data: frmStr,
success: function(data, textStatus, jqXHR) {
processJSON2(data);
},
error: function(jqXHR, textStatus, errorThrown){
alert("Failed to perform gene search! textStatus: (" + textStatus$
") and errorThrown: (" + errorThrown + ")");
}
});
}
这里是我的CGI文件:
#!/usr/local/bin/python3
import cgi, json
import os
import mysql.connector
def main():
print("Content-Type: application/json\n\n")
form = cgi.FieldStorage()
term2 = form.getvalue('input2')
#trying here to get the value of input1 (information1_id)
#term1=getvalue('input1')
conn = mysql.connector.connect(user='user1', password='psd1', host='host1'
cursor = conn.cursor()
qry = """
SELECT name_input2, age_input2, city_input2
FROM info2
join info1 ON
info2_id=information1_id
WHERE name_input2 LIKE %s and info2_id=%s
"""
# adding another query condition based on the value of input1
cursor.execute(qry, ('%' + term + '%',term1))
results = { 'match_count': 0, 'matches': list() }
for (name_input2, age_input2, city_input2) in cursor:
results['matches'].append({'name_input2': name_input2, 'age_input': age_input2,'city_input2':city_input2})
results['match_count'] += 1
conn.close()
#send the value back to the JS file to be display
print(json.dumps(results))
如何引用input1以便我可以在mysql查询中使用它来输入input2?
答案 0 :(得分:0)
如果序列化输入,它将仅返回该输入。您应该序列化整个表单,这样您将在后端获得两个值。 getvalue('input1')
不起作用,因为您只是不发送该参数。