无法使Jquery ui自动完成小部件工作

时间:2010-03-10 09:50:59

标签: jquery asp.net-mvc json jquery-ui autocomplete

我正在尝试开发我的第一个ASP.NET MVC Web应用程序并遇到了jquery ui自动完成小部件的问题。

目前,我有一个带有多个文本框的表单,可以很好地适应自动完成功能。

我的“制作”(Car make)文本框的代码如下所示:

jquery的:

$(function() {
     $("#Make").autocomplete({
          source: '<%=Url.Action("Make","AutoComplete") %>' 
     });
});

ASP.NET MVC控制器:

public ActionResult Make(string term)
{
    return Json(Service.GetHints(HintType.Make, term, 20));
}

GetHints()返回一个IList of Hints,一个只有标签和值字符串属性的对象。文档暗示这是我应该返回到jquery,但它不想工作?任何人都可以给我任何建议/帮助吗?

1 个答案:

答案 0 :(得分:2)

我也遇到过这个问题。您需要将ActionResult更改为JsonResult

在MVC 2中对JsonResult进行了更改,因此它将不再使用HTTP GET来避免JSON劫持。

因此,您可以更改代码以通过HTTP POST返回或允许GET行为,这可能会让您对JSON hijacking开放。

尝试修改代码以遵循格式

return Json(data, JsonRequestBehavior.AllowGet);

所以你的代码看起来像

public JsonResult Make(string term)
{
    return Json(Service.GetHints(HintType.Make, term, 20), JsonRequestBehavior.AllowGet);
}