asp.net jquery json自动完成数据似乎不正确

时间:2011-11-03 15:10:41

标签: jquery asp.net json

我正在使用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 有关为什么我没有收到正确数据的任何想法? 谢谢

解决了这个问题:

好的我明白了。我使用' - '作为拆分字符,它是我的结果数据集的一部分。我改为使用|它现在正在运作。

1 个答案:

答案 0 :(得分:0)

(代表问题作者发布的解决方案,将其移至答案空间)

我知道了。我使用'-'作为拆分字符,它是我的结果数据集的一部分。我将其更改为使用“ |”并且现在正在工作。