2015-04-01 79 views
0

我正在使用經典ASP(不是我的想法)和使用訪問數據庫從中提取數據的AJAX進行項目工作。我有以下形式:在2個元素上的AJAX搜索

<form action="" id="autocomplete-search"> 
<div class="simplesearch"> 
<label for="intesearch">Start typing a name</label> 
<input type="text" onkeyup="showCustomer(this.value)" id="intesearch" onfocus="disable_submit()"> 
</div> 

的JavaScript我在我的頁面的頂部以下內容:

function showCustomer(str) 
{ 
// remove white space from the name entered on the search screen 
str = str.replace(" ", ""); 
var xmlhttp;  
if (str=="") 
{ 
document.getElementById("txtHint").innerHTML="No records found"; 
return; 
} 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
} 
    xmlhttp.open("GET","get_customer.asp?q="+str,true); 
    xmlhttp.send(); 
} 

此鏈接到一個ASP文件:

<% 
response.expires=-1 
dim name 
name = request.querystring("q") 
sql="SELECT person.id, person.forename, person.surname, person.postid, person.extension, person.internal_extension, person.mobile, person.room_number, job.id, job.name FROM staff INNER JOIN posts ON job.id = person.jobid WHERE (person.forename & person.surname like '%" & name & "%') or job.name like '%" & name & "%' 
set conn=Server.CreateObject("ADODB.Connection") 
conn.Provider="Microsoft.Jet.OLEDB.4.0" 
conn.Open("E:\websites\directory\database.mdb") 
set rs=Server.CreateObject("ADODB.recordset") 
rs.Open sql,conn 
response.write("<table>") 
response.write("<thead>") 
response.write("<tr>") 
response.write("<th>Forename</th>") 
response.write("<th>Surname</th>") 
response.write("<th>Extension</th>") 
response.write("<th>Internal Ext.</th>") 
response.write("<th>Mobile</th>") 
response.write("<th>Room No.</th>") 
response.write("<th></th>") 
response.write("</tr>") 
response.write("</thead>") 
response.write("<tbody>") 
Do While Not rs.EOF 
    response.write("<tr>") 
    response.write("<td>" & rs("forename") & "</td>") 
    response.write("<td>" & rs("surname") & "</td>") 
    response.write("<td>" & rs("extension") & "</td>") 
    response.write("<td>" & rs("internal_extension") & "</td>") 
    response.write("<td>" & rs("mobile") & "</td>") 
    response.write("<td>" & rs("room_number") & "</td>") 
     response.write("<td>" & rs("name") & "</td>") 
     response.write("<td><a href='index.asp?View=StaffRecord&StaffID=" & rs("id") & "'>Record</a></td>") 
    response.write("</tr>") 
rs.MoveNext 
loop 
response.write("</tbody>") 
response.write("</table>") 
%> 

的問題在於,當我從一個表中提取數據時它工作正常。由於某種原因,AJAX似乎討厭加入。

任何想法?

+0

你確定SQL語句是正確的?您執行加入的表似乎是「staff」和「posts」,但在您的查詢中,您使用'job.'和'person.'指代字段。 – prem89 2015-04-01 13:46:40

+0

sql應該是人員和工作 – wrichards0 2015-04-01 13:49:29

回答

0

您的查詢需要改變這樣的參考表的工作和人

sql="SELECT person.id, person.forename, person.surname, person.postid, person.extension, person.internal_extension, person.mobile, person.room_number, job.id, job.name FROM staff as person INNER JOIN posts as job ON job.id = person.jobid WHERE ((person.forename like '%' and person.surname like '%' and name like '%') or (job.name like '%' and name like '%'))"; 
+0

我有,而且它沒有似乎工作 – wrichards0 2015-04-01 14:12:31

+0

好吧,我已更新查詢。你想用這個查詢來達到什麼目的,就像''%''將返回該字段的所有行! – prem89 2015-04-01 15:03:06

+0

如果我有一個標準的隊伍,查詢就可以工作。它只是我試圖使用ajax來返回結果列表,因爲用戶輸入名稱,類型的自動完成搜索。如果我有一張表,但沒有包含作業表,則適用 – wrichards0 2015-04-01 15:06:52