13

私のアプリケーションはselect2を使用して、Ajax 呼び出しで取得した名前のリストを表示します。select2 ajax 機能を使用します。

しかし、問題は、 select2入力に入力するたびにselect2がアイテムをフェッチすることです。ユーザーが入力するたびに取得したくありません。select2の初期読み込みでアイテムを取得したいので、select2 入力に入力しても同じデータを使用します。

どうすればこれを達成できますか?

PS: Ajax でキャッシュ フラグを見たことがありますが、URL に基づいて結果をキャッシュしていると思います。ユーザーがselect2入力に入力しても、データのフェッチは停止しません。

4

2 に答える 2

24

Select2 は、インプレース キャッシングを使用して ajax を使用してデータを読み込みます。

$("#selIUT").select2({
            cacheDataSource: [],
            placeholder: "Please enter the name",
            query: function(query) {
                self = this;
                var key = query.term;
                var cachedData = self.cacheDataSource[key];

                if(cachedData) {
                    query.callback({results: cachedData.result});
                    return;
                } else {
                    $.ajax({
                      url: '/ajax/suggest/',
                      data: { q : query.term },
                      dataType: 'json',
                      type: 'GET',
                      success: function(data) {
                        self.cacheDataSource[key] = data;
                        query.callback({results: data.result});
                      }
                    })
                }
            },
            width: '250px',
            formatResult: formatResult, 
            formatSelection: formatSelection, 
            dropdownCssClass: "bigdrop", 
            escapeMarkup: function (m) { return m; } 
        }); 

お役に立てば幸いです。

于 2013-07-29T08:31:38.930 に答える