2011-10-12 66 views
0

我在我的ASP.NET网站中使用自动完成jQuery插件,我似乎无法追查我在这个新网站上做错了什么。请注意,我有100%的工作在我的另一个ASP.NET站点上,并且已经通过一个细致的梳子来比较这个新项目的设置,并且找不到它们的区别。jQuery自动完成工作,但不显示文本

发生了什么事情是所有东西都连接起来了,Http Handler正在将数据序列化为json,并将其写入reposnse而没有错误。该框甚至表现得像它正在工作,越来越小,因为我输入更多的字母,但没有文本显示。我会发誓这是一个CSS问题,但通过开发人员工具栏查看源代码,我发现呈现的列表不完整。以下是我从我的网站,做看到工作:

<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时存在结果。有任何想法吗?谢谢!

+0

你可以粘贴HttpResponse(即JSON)和JavaScript代码来呈现它吗? – ManseUK

+0

我可以从调试中提取出json - >我怎样才能得到.js并试试你在说什么? JSONLint验证它是正确的。 – atconway

+0

必须有一些JavaScript代码来创建自动完成 - 即您应该发布的代码。 – ManseUK

回答

2

Arrrghhh。在经历了很多挫折后,我追踪了这个问题。我使用LINQ查询来填充以下(3)的一个简单DTO类:

ID,标签,值

...好我我曾见过一个例子仿照类,但不要通常不会在所有小写值中创建属性,所以今天早上我将它们更改为:

ID,标签,值。

那么无辜的变化是罪魁祸首。这些属性被写入json的响应中,并由名为jquery.ui.autocomplete.js的jQuery .js文件解析。它包含以下代码(我搜索下来的事实后解释这个帖子详细,因为通常我不关心了jQuery文件的内部运行;我只关心他们的工作!):

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

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