经典ASP自动完成

时间:2014-10-04 08:15:20

标签: ajax asp-classic autocomplete

我使用经典ASP创建自动完成页面。我有两个不同的网页autocomplete.aspsource.asp。我的代码如下:

autocomplete.asp

<%@  language="VBScript" %>
<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>jQuery UI Autocomplete - Default functionality</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css">
        <!-- SCRIPT FOR AUTOCOMPETE SEARCH BOX //-->
        <script type="text/javascript" language="javascript">
            $(function () {
                $("#productname").autocomplete({
                    source: "source.asp",
                    minLength: 2
                });
            });
        </script>

    </head>
    <body>

        <p>&nbsp;</p>

        <div class="ui-widget">
            <label for="tags">Tags: </label>
            <input id="productname">
        </div>    
        <p>&nbsp;</p>
    </body>
</html>

sourse.asp

<%@  language="VBScript" %>

        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2  /jquery.js" ></script>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js" ></script>
        <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"/>

        <!-- SCRIPT FOR AUTOCOMPETE SEARCH BOX //-->

    </head>

    <%
    Dim keywords, keywords_cmd, output, firstItem

    Set keywords_cmd = Server.CreateObject ("ADODB.Command")
    keywords_cmd.ActiveConnection = "DRIVER={SQL Server};SERVER=wsgpdba4.sgp.is.keysight.com;UID=kportal;PWD=q1w2e3r4;DATABASE=A_Sys"
    keywords_cmd.CommandText = "SELECT ProductId FROM Product where ProductId like '%"  & Request.QueryString("term") & "%'"
    keywords_cmd.Prepared = true

    Set keywords = keywords_cmd.Execute

    output = "["

    While (NOT keywords.EOF) 
        output = output & "{""ProductId"":""" & keywords.Fields.item("ProductId") & """},"
         keywords.MoveNext()
    Wend

    keywords.Close()
    Set keywords = Nothing

    output=Left(output,Len(output)-1)
    output = output & "]"
    response.write output

    %>
    <body>

    </body>
</html>

source.asp像这样回复我:

[{"ProductId":"111 "}]

请帮忙

2 个答案:

答案 0 :(得分:1)

我最近不得不从事一个遗留程序。我不得不自动建议要使用SQL和ASP。这就是我想出的。

<%@ Language=VBScript %>
<!-- #include File="CarrierAutocomplete.inc"--> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<link href="jquery-ui-1.12.1.custom/jquery-ui.css">
<script src="jquery-ui-1.12.1.custom/external/jquery/jquery.js"></script>
<script src="jquery-ui-1.12.1.custom/jquery-ui.js"></script>

<script>
$(function() {
var strCarriers = [<%=getListOfCarriers()%>];
$( "#carrier_name" ).autocomplete({
source: strCarriers
}); 
});
</script>


</head>
<body> 
<table>

<tr>
<td align="right"><p><b>CARRIER:</b></td> 
<label for="carrier_name"></label></td>
<td><input id="carrier_name" name="carrier_name"></td>
</tr>   
</table>
</body>
</html>



'CarrierAutoComplete.inc

<!--#include file="ConnStrings.inc"--> 'you won't need this
<%

Function getListOfCarriers()

Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Dim sql
Dim allCarriers
Dim strCarriers
Dim n

'conn.Open ConnString 'PRODUCTION
conn.Open ConnString 'DEVELOPMENT

sql = "SELECT [carrier] FROM [dbo].[VerifiedCarriers] order by carrier"

Set RS = Conn.Execute(sql)

if not rs.eof and err.number=0 then
allCarriers = rs.getrows
End If

colStart = LBound(allCarriers, 1)
colEnd   = UBound(allCarriers, 1)
rowStart = LBound(allCarriers, 2)
rowEnd   = UBound(allCarriers, 2)


For row=rowStart to rowEnd
   For col=colStart to colEnd
       strCarriers = strCarriers + """" & "" & allCarriers(col,row) & """," & chr(13)  
   Next
 Next

strCarriers = Left(strCarriers,Len(strCarriers) - 2) 'REMOVE THE LAST COMMA 
response.write strCarriers




End Function 
%>

答案 1 :(得分:-1)

我不是100%明确这个问题,但是jquery ui控件需要以预期的价值和标签形式提供数据:

[{"value":"111", "label":"sample product"}] 

如果您不关心这些值,您可以提供一系列字符串:

["product one", "product two"]

您还没有从您的数据库中选择产品名称,只是ID,因为我认为您的自动填充功能需要显示产品名称列表?