web-dev-qa-db-ja.com

このjavascript応答関数は何をしますか?

このコードは別の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()が何をするのかわかりません。

12
Dismissile

応答と呼ばれるこのオブジェクトは、オートコンプリートメソッドによってsourceというラベルの付いた関数に渡されるコールバック関数です。

Jquery UI Autocompleate を参照してください

3番目のバリエーションであるコールバックは最も柔軟性があり、任意のデータソースをオートコンプリートに接続するために使用できます。コールバックは2つの引数を取得します。

「term」と呼ばれる単一のプロパティを持つリクエストオブジェクト。これは、現在テキスト入力にある値を参照します。たとえば、ユーザーが都市フィールドに「new yo」と入力した場合、オートコンプリートの用語は「newyo」と等しくなります。

responseコールバック。これは、単一の引数にユーザーに提案するデータが含まれていることを期待します。このデータは、指定された用語に基づいてフィルタリングする必要があり、単純なローカルデータ(ラベル/値/両方のプロパティを持つString-ArrayまたはObject-Array)の場合は上記の任意の形式にすることができます。リクエスト中のエラーを処理するカスタムソースコールバックを提供する場合は重要です。エラーが発生した場合でも、常に応答コールバックを呼び出す必要があります。これにより、ウィジェットが常に正しい状態になります。

17
David Waters