【问题标题】:asp.net jQuery json autocomplete data doesn't seem to be correctasp.net jQuery json 自动完成数据似乎不正确
【发布时间】:2011-11-03 15:10:41
【问题描述】:

我正在使用 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
    });

这是来自网络服务方法的代码:

<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

关于为什么我没有得到正确数据的任何想法?

【问题讨论】:

    标签: jquery asp.net json


    【解决方案1】:

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

    我想通了。我使用“-”作为分割字符,它是我的结果数据集的一部分。我将其更改为使用“|”现在它正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      相关资源
      最近更新 更多