【问题标题】:Cant get Jquery ui autocomplete widget to work无法让 Jquery ui 自动完成小部件工作
【发布时间】:2011-01-25 19:55:09
【问题描述】:

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

目前我有一个带有许多文本框的表单,它们很适合自动完成功能。

我的“制造”(汽车制造)文本框的代码如下所示:

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 但它不想工作?谁能给我任何建议/帮助?

【问题讨论】:

  • 你调用ActionResult成功了吗?
  • 是的。每次我在 Make 文本框中编辑文本时,它都会触发 ActionResult。
  • 您能否发布指向您正在使用的 jQuery 自动完成小部件的文档的链接?您可能会以错误的格式返回您的 json 数据。

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


【解决方案1】:

我也遇到过这个问题。您需要将 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2010-12-18
    相关资源
    最近更新 更多