我有asp页面,我需要显示来自Sql Server数据库的数据表,我想从2个文本区域中选择城市名称(例如源和目标),然后显示该行的所有信息。 这是autocomplete.html的副本:
<!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"
];
我怎么能这样做?
感谢您的帮助!
答案 0 :(得分:1)
您可以像使用表单一样使用Classic 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