jQuery自动完成工作但不显示文本

时间:2011-10-12 19:16:37

标签: json

我在我的ASP.NET站点中使用了一个Autocomplete jquery插件,我似乎无法追踪我在这个新站点上做错了什么。请注意,我100%在我的另一个ASP.NET网站上工作,并且通过精细的牙齿梳理它,将设置与这个新项目进行比较,但无法找到差异。

发生的事情是所有内容都已连线,Http Handler将数据序列化为json,并将其写入reposnse而不会出错。该框甚至表现得像它工作,当我输入更多字母时变小,但显示 没有 文本。我发誓这是一个CSS问题,但是使用Developer工具栏查看源代码,我发现渲染列表不完整。以下是我在网站上看到工作的内容:

<li jQuery16208584441255029163="12"/>

以下是我在工作网站上使用完全相同的插件,CSS,引用,代码等看到的内容:

<li class="ui-menu-item" role="menuitem" jQuery16205959569234760148="7">
    <a tabIndex="-1" class="ui-corner-all" jQuery16205959569234760148="33">
        Text - John Smith 

我在这里缺少什么?我调试的所有代码都运行得很好,并且当作为json写入HttpResponse时结果存在。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

Arrrghhh。经过很多挫折后,我追查了这个问题。我使用LINQ查询来填充具有以下(3)属性的简单DTO类:

id,label,value

......好吧我在看过一个例子之后对这个类进行了建模,但是通常不会在所有小写值中创建属性,所以今天早上我把它们改为:

ID,标签,价值。

那无辜的改变是罪魁祸首。这些属性被写入json中的响应,并由名为jquery.ui.autocomplete.js的jQuery .js文件解析。它包含以下代码(我在事后搜索了详细解释这篇文章,因为通常我不关心jQuery文件的内部工作;我只关心它们的工作!):<​​/ p>

    return $.map( items, function(item) {
        if ( typeof item === "string" ) {
            return {
                label: item,
                value: item
            };
        }

是的,区分大小写的值没有从jSON中获取我的大写名称,并且没有在框中呈现任何内容。