我試圖使用自動完成的小部件,通過AJAX請求從遠程源獲取其數據。數據應該作爲AddressController上GetDistricts
Action方法的JSON結果。不幸的是,當我輸入文本框時,菜單不會彈出。我檢查了Firebug的響應,一切似乎好: {"districtNames":["Beirut","Bekaa","Mount Lebanon","South","Nabatieh","North"]}
,所以我真的不知道發生了什麼事情......這裏是我的jQuery代碼:jQuery UI自動完成:菜單不顯示
district.autocomplete({
minLength: 2,
source: function (request, response) {
$.ajax({
type: "GET",
url: '@Url.Action("GetDistricts", "Address")',
dataType: "json",
success: function (data) {
response($.map(data, function (item) {
return {
label: item.text,
value: item.text
}
}))
}
})
}
});
這是我的操作方法:
public ActionResult GetDistricts(string term)
{
var districts = _service.GetDistricts();
var districtNames = from c in districts select c.Name;
return Json(new {districtNames}, JsonRequestBehavior.AllowGet);
}
PS:我嘗試使用本地數據,其中源是一個數組,它工作得很好。所以我不認爲這是與CSS有關......
@Andrew Whitaker:是的,我改變了我從操作方法發回數據的方式。它工作okey和菜單彈出。但我無法選擇一個項目。它一直拋出這個錯誤:'f.item是null'。這可能是自動完成小部件本身的錯誤還是什麼? – Kassem 2011-05-01 22:00:24
@Kassem:有趣 - 你還在將'source'定義爲一個函數,還是僅僅使用url來進行控制器操作? – 2011-05-01 22:05:40
@Andrew Whitaker:只是控制器操作的網址。當我嘗試將源定義爲函數時,菜單彈出「空」。我檢查了螢火蟲中的'ul'標籤,所有'li'標籤裏面什麼也沒有。有什麼想法嗎? – Kassem 2011-05-01 22:07:15