起動前に ajax.url の値を変更する方法、タイミング、場所がわかりません。
このajax.url
オプションは、Select2 3.5.x と 4.0.0 の両方で静的文字列またはそれを返すメソッドとして指定できます。
$("select").select2({
ajax: {
url: function () {
return UrlHelper.RemoteAPI();
}
}
});
これは、ベース URLを変更する場合に便利です。たとえば、URL が実行時に決定される場合や、別の方法で自動的に生成される場合です。検索語の送信に使用されるパラメータなど、クエリ パラメータを変更する必要がある場合は、ajax.data
オプションをオーバーライドする必要があります。
$("select").select2({
ajax: {
data: function (args) {
// args is the search term in 3.5.x
// args is an object containing the query parameters in 4.0.0
// args.term is the search term in 4.0.0
return {
search: args.term || args;
};
}
}
});
ここのデータは、デフォルトでクエリ パラメータとして追加され、メソッド タイプがGET
(デフォルト)から他のものに変更された場合、リクエスト ボディとして送信されます。
Select2 は、デフォルトで jQuery の $.ajax 関数を使用してリモート呼び出しを実行します。代替トランスポート関数を ajax 設定で指定するか、ajax ヘルパーを使用する代わりにカスタム クエリ関数を提供することで、完全にカスタムの実装を構築できます。
しかし、それを行う方法の例が見つかりません。
Select2 では、オプションを変更することで、別の AJAX トランスポートを使用ajax.transport
できます。
3.5.2 では、これは互換性のあるメソッドである必要があるため、およびコールバック$.ajax
を含むオブジェクトを取得できる必要があります。success
failure
$("select").select2({
ajax: {
transport: function (args) {
// args.success is a callback
// args.failure is a callback
// should return an object which has an `abort` method.
return $.ajax(args);
}
}
});
4.0.0 では、これはparams
オブジェクト ( に渡されるものと同じajax.data
)、success
コールバック、およびコールバックを受け取るメソッドである必要がありfailure
ます。
$("select").select2({
ajax: {
transport: function (params, success, failure) {
var $request = $.ajax(params);
$request.then(success);
$request.fail(failure);
return $request;
}
}
});