Asp.net mvc 3 带MVC的jQuery UI自动完成无法显示返回的项目
我已经在这个问题上绞尽脑汁一段时间了,我不知道我做错了什么 我对我的一个控制器进行了一个非常简单的JSON调用,我希望使用jQueryUIAutoComplete返回客户机名称和相关的ID值。我可以在Firebug中看到结果,但是自动完成总是返回一个空列表 jquery生成的列表中的项目数是正确的——例如,如果我返回了3个结果,那么我会看到包含3个空白列表项目的建议菜单。问题似乎是jquery没有正确解析我的响应 我没有在文本框上使用jqueryvalidate,这里的一些其他问题表明了这一点 我正在本地运行这个程序,如果这有什么不同的话 下面是我使用的jquery/HTML:Asp.net mvc 3 带MVC的jQuery UI自动完成无法显示返回的项目,asp.net-mvc-3,jquery-ui,autocomplete,Asp.net Mvc 3,Jquery Ui,Autocomplete,我已经在这个问题上绞尽脑汁一段时间了,我不知道我做错了什么 我对我的一个控制器进行了一个非常简单的JSON调用,我希望使用jQueryUIAutoComplete返回客户机名称和相关的ID值。我可以在Firebug中看到结果,但是自动完成总是返回一个空列表 jquery生成的列表中的项目数是正确的——例如,如果我返回了3个结果,那么我会看到包含3个空白列表项目的建议菜单。问题似乎是jquery没有正确解析我的响应 我没有在文本框上使用jqueryvalidate,这里的一些其他问题表明了这一点
<script src="https://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript"> google.load("jquery", "1.6.4")</script>
<script type="text/javascript"> google.load("jqueryui", "1.8.16")</script>
<script type="text/javascript">
$(document).ready(function () {
$("#clientEntered").autocomplete({
source: '@Url.Action("ClientAutoSuggest", "Clients")'
});
});
</script>
<input type="text" name="clientEntered" id="clientEntered" />
如上所述,我确实看到Firebug中传回的结果,但生成的列表总是空的
示例-如果返回2个结果,我将在Firebug中看到2个结果:
[{"ClientID":1,"Name":"Client 1"},{"ClientID":2,"Name":"Client 2"}]
如果我查看生成的源,我会看到以下2项正确,但为空:
<ul style="z-index: 1; top: -16px; left: 0px; display: block; width: 1864px; position: relative;" aria-activedescendant="ui-active-menuitem" role="listbox" class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all"><li></li><li></li></ul>
我没有看到任何参考文献2,实际上是自动完成JS?你可能在别的地方有,但我只是想让你知道 真正的问题可能是由您的“@Url.Action”引起的。它将只执行该操作并返回结果。没有*到文本框的映射 最好的做法是只进行一个简单的Ajax调用,并在收到响应时进行映射 应该是这样的,写得很快,所以不要向我开枪,但你应该了解情况
$("#clientEntered").autocomplete({
source: function(request,response)
{
$.ajax({
url: "/Clients/ClientAutoSuggest",
type:"POST",
dataType:"json",
data: { term: request.term },
success:function(data){
response($.map(data,function(item){
return { label: item.Name,value: item.Name, id: item.ClientId
}))
}
})
}
});
我没有看到任何参考文献2,实际上是自动完成JS?你可能在别的地方有,但我只是想让你知道 真正的问题可能是由您的“@Url.Action”引起的。它将只执行该操作并返回结果。没有*到文本框的映射 最好的做法是只进行一个简单的Ajax调用,并在收到响应时进行映射 应该是这样的,写得很快,所以不要向我开枪,但你应该了解情况
$("#clientEntered").autocomplete({
source: function(request,response)
{
$.ajax({
url: "/Clients/ClientAutoSuggest",
type:"POST",
dataType:"json",
data: { term: request.term },
success:function(data){
response($.map(data,function(item){
return { label: item.Name,value: item.Name, id: item.ClientId
}))
}
})
}
});
非常感谢你的帮助,凯文。这似乎奏效了!非常感谢你的帮助,凯文。这似乎奏效了!
$("#clientEntered").autocomplete({
source: function(request,response)
{
$.ajax({
url: "/Clients/ClientAutoSuggest",
type:"POST",
dataType:"json",
data: { term: request.term },
success:function(data){
response($.map(data,function(item){
return { label: item.Name,value: item.Name, id: item.ClientId
}))
}
})
}
});