基于2个输入字段的Jquery ajax mysql搜索

时间:2018-04-16 23:37:25

标签: python jquery json ajax cgi

我必须在表单中输入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?

1 个答案:

答案 0 :(得分:0)

如果序列化输入,它将仅返回该输入。您应该序列化整个表单,这样您将在后端获得两个值。 getvalue('input1')不起作用,因为您只是不发送该参数。