【问题标题】:The same autocomplete works in one solution, but not in the other one相同的自动完成功能适用于一种解决方案,但不适用于另一种解决方案
【发布时间】:2014-10-28 08:43:17
【问题描述】:

我已经尝试了一切,这让我发疯。 我做了一个在解决方案中工作的自动完成功能,但是当我在我的主解决方案中导出它(复制和粘贴)时,它不再起作用,并且我不断收到以下错误:“无法获取未定义或 null 的属性'长度'参考”。 它不能是 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 与项目中的不同,但在其他解决方案中可以正常工作。

后面的代码: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;
    }

【问题讨论】:

    标签: c# jquery asp.net autocomplete


    【解决方案1】:

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

    【讨论】:

    • 我得到“参数”未定义。数据中的异常:“System.InvalidOperationException”
    • 看来您在表达式$('#MainContent_provatxt').val() 中有错误的ID。你能用浏览器开发者工具验证 id 吗?
    • 我应该在哪里找到它?我通常用检查器点击文本框,但在这种情况下没有文本框
    • 如果自动完成初始化 - 则 id 是正确的。尝试在您的 source 函数中执行 data: request.term
    • 自动完成默认在用户输入 3 个字符后发送第一个请求。您可以通过minLength 属性对其进行控制。 request.term 必须包含相应请求中文本框中的所有文本。来自jQuery UI doc一个请求对象,具有单个 term 属性,它引用文本输入中当前的值。例如,如果用户在城市字段中输入“new yo”,则自动填充词将等于“new yo”。
    猜你喜欢
    • 2012-02-15
    • 2012-02-07
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多