我正在使用jquery来调用Web服务方法来执行自动完成,但是文本框的自动完成/建议下拉列表中的数据与我直接运行查询时的数据不同,我需要尽快解决此问题
这是document.ready函数中的jquery:
$("#<%=txtSearch.ClientID %>").autocomplete({
source: function (request, response) {
$.ajax({
url: '../cspm/s3.asmx/SearchSrn1',
data: "{ 'prefixText': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
}))
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
},
minLength: 2
});
这是来自Web服务方法的代码:
<WebMethod(), System.Web.Script.Services.ScriptMethod()> _
Public Function SearchSrn1(ByVal prefixText As String) As String()
Dim results As New List(Of String)()
Dim searchText As String() = prefixText.Split(New Char() {" "c})
sql = New StringBuilder()
sql.Append("select rownum,b.* from ")
sql.Append("(select distinct a.* from imsi_keyword_lookup_b a ")
sql.Append("where keyword like upper('%" + searchText(0).ToUpper() + "%') ")
For i As Integer = 1 To searchText.Length - 1
If searchText(i) <> "" Then
sql.Append("and keyword like '%" + searchText(i).ToUpper() + "%' ")
End If
Next
sql.Append("order by rank desc) b ")
sql.Append("where rownum <= 5 ")
Using rdr As System.Data.IDataReader = db.ExecuteDataReader(sql.ToString())
Dim counter As Integer
While rdr.Read
If (counter = 5) Then Exit While
results.Add(String.Format("{0}-{1}", rdr("keyword"), rdr("keyword")))
counter += 1
End While
End Using
Return results.ToArray()
End Function
当我输入gif时,我会返回5个结果,但他们都会在文本框的下拉部分中说出GIF。 当我使用GIF作为关键字运行查询时,我得到:GIF-Q,GIF-160,GIF-Q180,GIF-H180,GIF-Q160 有关为什么我没有收到正确数据的任何想法? 谢谢
解决了这个问题:
好的我明白了。我使用' - '作为拆分字符,它是我的结果数据集的一部分。我改为使用|它现在正在运作。
答案 0 :(得分:0)
(代表问题作者发布的解决方案,将其移至答案空间)。
我知道了。我使用'-'作为拆分字符,它是我的结果数据集的一部分。我将其更改为使用“ |”并且现在正在工作。