0
私はJSを初めて使い、新しいプロジェクトでselect2を取得しましたが、現時点ではこのようなコードがあります(これはちょっとしたバージョンです):別のAJAXリクエストでSelect2プラグインのAJAXレスポンスをフィルタリングする
$("#group-search").select2({
ajax: {
url: "groups.search",
dataType: 'jsonp',
data: function (term, page) {
return {
q: term,
access_token: access_token
};
},
results: function (data, page) {
return { results: data.response.items };
}
}
});
しかし、結果(data.response.items
)を別のAJAXリクエストの助けを借りてフィルタリングする必要があります。何とか達成することは可能ですか?
UPDATE 1
これは私がValLenain 提案に応じて行うことを試みたが、それは動作しないものです:
results: function (data, page) {
var groups = data.response.items;
var groupIds = new Array;
groups.forEach(function (group) {
groupIds.push(group.id);
});
$.ajax({
url: "groups.getById",
dataType: 'jsonp',
data: {
group_ids: groupIds,
v: '5.60',
access_token: access_token
},
success: function(data, page) {
return { results: data.response };
}
}).then(function(response){
groups = [];
// so at this moment we are expecting the select field to become empty, right?
// it doesn't work that way, nothing changes
});
return { results: groups };
}
@VaIleNainのボディを書き換えてきましたが、 'リターン{結果:アイテム}ではないでしょう;'ステートメントを '関数(filteredItems)'長い時間前に解雇されますか?それはAJAXの呼び出しのポイントではありませんか?または、私はここに何かを逃している? –
@VaILeNain、私はちょうどそれを試して、それは私が期待どおりに働いた。 'return {results:items};'がフィルタリングajax呼び出しの前に実行されています。完全なコードが必要な場合は私のメインポストを更新することができます –
はい、return文は2番目のajax呼び出しの前に実行されますが、返されるオブジェクト(たとえば '{results:items}')はajax呼び出しの後に更新されます私たちはそれを参照しているからです。 – ValLeNain