相同的自动完成功能在一个解决方案中有效,但在另一个解决方案中则无效

时间:2014-10-28 08:43:18

标签: c# jquery asp.net autocomplete

我已经尝试了一切,这让我很生气。 我做了一个自动完成功能,它可以在一个解决方案中运行,但当我在我的主解决方案中导出它(复制和粘贴)时,它不再工作,我不断收到以下错误:"无法获得属性&# 39;长度'未定义或空引用"。 它不能是jquery版本和东西,因为它适用于其他解决方案。

的aspx: CodiceFiscale.aspx

<link rel="Stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/them/redmond/jquery-ui.css" />            
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.js"></script>

<script type="text/javascript">
$(function () {
    $("#MainContent_provatxt").autocomplete({
        source: function (request, response) {
            var param = { cityName: $('#MainContent_provatxt').val() };
            $.ajax({
                url: "CodiceFiscale.aspx/GetCities",
                data: JSON.stringify(param),
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataFilter: function (data) { return data; },
                success: function (data) {
                    response($.map(data.d, function (item) {
                        return {
                            value: item
                        }
                    }))
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        },
        minLength: 3
    });
});

<asp:TextBox ID="provatxt" runat="server"></asp:TextBox> 

啊顺便说一下,我必须通过#MainContent_获取元素,因为浏览器中文本框的id与项目中的文本框的ID不同,但在其他解决方案中它可以正常工作。

代码背后:CodiceFiscale.aspx.cs

[WebMethod]
    public static List<string> GetCities(string cityName)
    {

        List<string> City = new List<string>();
        string query = string.Format("SELECT DISTINCT nome_comune FROM comuni WHERE nome_comune LIKE '%{0}%'", cityName);
        using (MySqlConnection conn = new MySqlConnection("server=localhost;Database=servizi; Uid=root; Pwd=root;"))
        {
            using (MySqlCommand cmd = new MySqlCommand(query, conn))
            {
                conn.Open();
                MySqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    City.Add(reader.GetString(0));
                }
            }
        }
        return City;
    }

1 个答案:

答案 0 :(得分:1)

您可以使用ClientIDMode控制您的客户端ID,以使ID更具可预测性(post about that)。 服务器在success功能中返回什么?