0

我有asp页面,我需要显示来自Sql Server数据库的数据表,我想从2个文本区域(源和目标)中选择城市名称,然后显示所有该行的信息。 这里是autocomplete.html的副本:jQuery从数据库自动完成与asp

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" /> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> 
<link rel="stylesheet" href="/resources/demos/style.css" /> 
<script> 
$(function() { 
var availableTags = [ 
"Shanghai", 
"Shenzhen", 
"Casablanca", 
"Jeddah", 
"Paris", 
"PHP", 
"London", 
"Tokyo", 
"Jeddah", 
"Istambul" 
]; 
$("#tags").autocomplete({ 
source: availableTags 
}); 
}); 
</script> 
    </head> 
    <body> 
    </body> 
</html> 

在页面的index.asp:

.... 
    <!--#include file="autocomplete.html"--> <label for="tags"> POD </label> 
<input id="tags" /> 
    <br> 

我从jQuery自动完成想要得到的源,并从我的数据库的目标不是方式:

var availableTags = [ 
"Shanghai", 
"Shenzhen", 
"Casablanca", 
"Jeddah", 
"Paris", 
"PHP", 
"London", 
"Tokyo", 
"Jeddah", 
"Istambul" 
]; 

我该怎么做?

谢谢你的帮助!

回答

1

您可以像使用表单一样使用经典ASP。尝试把你的代码括号中的数组列表里面,像这样......

var availableTags = [<%=GetCities() %>]; 

GetCities()功能会再输出到Response对象所需的城市名单。

- 编辑 -

下面的代码还没有经过完全测试。您可能还需要修改适合您需求的零件:

const C_NO_DATA = "NO_DATA"    'Used when no data is returned to a consuming routine 
const C_ERROR = "ERROR"    'Used when an error is generated - to be fed to the comsuming routine 

'GetDataSet 
' Returns a table of data based on the supplied SQL statement and connection string. 
'Parameters: 
' sqlString (string) - The SQL string to be sent. 
' connString (string) - The database connection string. 
'Usage: 
' dataSet = GetDataSet(sqlString, connString) 
'Description: 
' This function generates a table of information in a 2 dimensional array. The first dimension represents the columns 
' and the second the rows. If an error occurs while the routine is executing the array and the base index (0,0) is set 
' to C_ERROR, (0,1) to the VBScript error index, and (0,2) to the VBScript error description. 
function GetDataSet(sqlString, connString) 
    'Initialise... 
    dim returnVal, rsData 
    on error resume next 
     'Define and open the recordset object... 
     set rsData = Server.CreateObject("ADODB.RecordSet") 
     rsData.Open sqlString, connString, 0, 1, 1 
     'Initialise an empty value for the containing array... 
     redim returnVal(0,0) 
     returnVal(0,0) = C_NO_DATA 
     'Deal with any errors... 
     if not rsData.EOF and not rsData.BOF then 
      'Store the data... 
      returnVal = rsData.GetRows() 
      'Tidy up... 
      rsData.close 
      set rsData = nothing 
      select case err.number 
       case 3021 'No data returned 
        'Do nothing as the initial value will still exist (C_NO_DATA) 
       case 0  'No error 
        'Do nothing as data has been returned 
       case else 
        redim returnVal(4,0) 
        returnVal(0,0) = C_ERROR 
        returnVal(1,0) = err.number 
        returnVal(2,0) = err.description 
        returnVal(3,0) = sqlString 
        returnVal(4,0) = connString 
      end select 
     end if 
    on error goto 0 
    'Return the array... 
    GetDataSet = returnVal 
end function 

function GetCities() 
    dim sql, tCity, rc, max, rv 
    sql = _ 
     "SELECT " & _ 
      "'""' + city_name + '""' AS city " & _ 
     "FROM " & _ 
      "clkj_freight " & _ 
     "WHERE " & _ 
      "pol = '" & replace(request.querystring("q"), "'", "''") & "'" 
    tCity = GetDataSet(sql, conn) 
    if tCity(0, 0) = C_ERROR or tCity(0, 0) = C_NO_DATA then rv = tcity(0, 0) 
    max = UBound(tCity, 2) '2 is the second dimension of the array 
    for rc = 0 to max 
     Response.Write(tCity(rc, 0)) 
     If rc<max then Response.Write(",") 
    Next 'rc 
    'If an error is encountered or no data is returned then notify the user (this behaviour may be changed if necessary)... 
    GetCities = rv 
end function 
+0

GetCities()函数应该怎么做?我的连接页面是这样的:'response.expires = -1 set rs = server.CreateObject(“adodb.recordset”) sql =“SELECT * FROM clkj_freight WHERE POL =” sql = sql&“'”&request .sysystring(“q”)&“'” rs.open sql,conn,1,1' 这是正确的吗? – tollamie 2013-05-06 08:17:43

+0

如果该代码检索您的城市列表,那么您只需将它们读入数组,在每个条目的开头和结尾添加语音标记,然后使用“Join”(使用逗号作为分隔符)以制作你的城市名单。 (你甚至可以把语音标记放到SQL中来加快速度 – Paul 2013-05-06 12:53:16

+0

你可以给我一个关于如何做到这一点的代码示例,因为我真的不知道该怎么办? – tollamie 2013-05-07 01:59:22