コンボ ボックスに select2 jQuery ベースの置換を使用しています。jsonレスト Web サービスから受け取ったデータを処理するためのコールバックを定義する必要があります。
問題は、同じコールバックで、一致するレコードの総数を取得するために別の GET 要求を発行する必要があるため、select2 がさらに結果をロードする必要があるかどうかを判断できることです (無限スクロール機能があります)。
コードは次のようなものです。
$("#country").select2({
ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
url: 'http://localhost:9000/api/countries',
dataType: 'json',
data: function(term, page) {
return {
filter: term,
page: page,
len: 10
};
},
results: function(data, page) {
return {
results: data, more: ????
};
}
}
});
問題は、非同期リクエストを発行する方法がわからないことです(クロスドメインリクエストを発行していますが、その場合、非同期はサポートされていないとドキュメントに記載されています)。結果コールバックから戻る前に、それが完了するのを待ちます。
select2 ページの例は次のようになります。
results: function (data, page) {
var more = (page * 10) < data.total; // whether or not there are more results available
// notice we return the value of more so Select2 knows if more results can be loaded
return {results: data.movies, more: more};
}
問題は、私の Web サービスが別のエンドポイントからレコードの総数を返すことです。そのため、次のように別のリクエストを行う必要があります: http: //localhost:9000/api/countries?filter=term
何か案が?