jQuery オートコンプリートsource
関数内にラップされた Ajax 呼び出しの下。Fiddler と Chrome のネットワーク コンソールで戻り値を確認すると、データが正しい形式でビューに返されていることがわかります。
ただし、ユーザーが入力を開始したときに発生する通常の項目のリストは表示されません。好きなだけ速く/遅く入力でき、何も表示されません。
プログラムの一部が正しく機能していることを確認するためだけに、コントローラー メソッド (これは ASP MVC サイトです) にブレークポイントを設定し、毎回起動します。
私はjQueryを初めて使用するのは数週間だけなので、どんな助けでも大歓迎です。ありがとう!
$(function () {
$('#DRMCompanyId').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("compSearch", "AgentTransmission")',
type: 'GET',
dataType: 'json',
data: request,
success: function (data) {
alert(data);
response($.map(function (value, key) {
alert(value);
return {
label: value,
value: key
};
}));
}
});
},
minLength: 1
});
});
編集
alerts
コードにいくつか追加しました。はalert(data)
発火しますが、発火しalert(value)
ません。
json
これは、Chrome のデバッグ コンソールから返されたのコピーです。
次に、キーと値のペアをオブジェクトの形式で返すコントローラー メソッドを示しますDictionary
。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
nsmgr.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
Dictionary<string, string> companies = new Dictionary<string, string>();
foreach (XmlNode childNode in parentNode)
{
if (!String.IsNullOrWhiteSpace(childNode["content"].InnerText))
{
try
{
string name = childNode["title"].InnerText;
string id = childNode["content"].InnerText.Substring(0, 6);
companies.Add(id, name);
}
catch (Exception ex)
{
}
}
}
return Json(companies, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
results = ex.InnerException.ToString();
}
return Json(results, JsonRequestBehavior.AllowGet);