ページでオートコンプリートを機能させるのに非常に問題があります。検索入力に 2 文字 (「OW」) を入力すると、プリローダー イメージ (以下を参照) が表示されますが、消えることはなく、オートコンプリート ポップアップも表示されません。Chrome でコンソールを見ると、次のように表示されます。
Uncaught TypeError: Cannot use 'in' operator to search for '62' in [{"value":103,"label":"FLOWER"},{"value":105,"label":"YELLOW"}]
返される実際の文字列は次のとおりです (成功ブロックにアラート (データ) を追加することで確認できます)。
[{"kwrdID":103,"kwrdKeyWord":"FLOWER"},{"kwrdID":105,"kwrdKeyWord":"YELLOW"}]
これがオートコンプリートのメインコードです
$("#searchInput").autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetKeywords", "Home")',
dataType: "json",
data: {
SearchTerm: request.term
},
success: function (data) {
response($.map(data.keywords, function (item) {
return {
label: item.kwrdKeyWord,
value: item.kwrdID
}
}));
}
});
},
minLength: 2
});
そして最後に、これがプリローダーです (関連がある場合に備えて)。
$(document).ajaxStart(function () {
var position = $('#divParent').position();
position.left += (($('#divParent').width() / 2) - ($('#preloader').width() / 2));
position.top += (($('#divParent').height() / 2) - ($('#preloader').height() / 2));
$('#preloader').css(position).show();
$('#preloader').show();
}).ajaxStop(function () {
$('#preloader').hide();
});
ここで何が起こっているのかを説明できる人はいますか?