このコードは別のSO投稿: jQuery UI Autocomplete with ASP MVC
$("#CustomerID").autocomplete({
source: function(request, response) {
$.ajax({
type: "POST",
url: "/customer/search",
dataType: "json",
data: {
term: request.term
},
error: function(xhr, textStatus, errorThrown) {
alert('Error: ' + xhr.responseText);
},
success: function(data) {
response($.map(data, function(c) {
return {
label: c.Company,
value: c.ID
}
}));
}
});
},
minLength: 2,
select: function(event, ui) {
alert('Select');
}
});
成功関数以外はすべて理解しています。 mapが配列を取得し、各値をlabelおよびvalueプロパティを持つ新しいオブジェクトにマッピングして、新しい配列を返すことは知っていますが、response()が何をするのかわかりません。
応答と呼ばれるこのオブジェクトは、オートコンプリートメソッドによってsourceというラベルの付いた関数に渡されるコールバック関数です。
Jquery UI Autocompleate を参照してください
3番目のバリエーションであるコールバックは最も柔軟性があり、任意のデータソースをオートコンプリートに接続するために使用できます。コールバックは2つの引数を取得します。
「term」と呼ばれる単一のプロパティを持つリクエストオブジェクト。これは、現在テキスト入力にある値を参照します。たとえば、ユーザーが都市フィールドに「new yo」と入力した場合、オートコンプリートの用語は「newyo」と等しくなります。
responseコールバック。これは、単一の引数にユーザーに提案するデータが含まれていることを期待します。このデータは、指定された用語に基づいてフィルタリングする必要があり、単純なローカルデータ(ラベル/値/両方のプロパティを持つString-ArrayまたはObject-Array)の場合は上記の任意の形式にすることができます。リクエスト中のエラーを処理するカスタムソースコールバックを提供する場合は重要です。エラーが発生した場合でも、常に応答コールバックを呼び出す必要があります。これにより、ウィジェットが常に正しい状態になります。