0

我设置了一个 AJAX select2 下拉菜单来进行无限分页。我想做的是继续在后台加载结果的第一页,这样一旦用户单击下拉菜单,他们就会立即拥有一组选项,而不是等待初始 AJAX称呼。

当我在 Google 上搜索如何执行此操作时,我只看到有关尝试设置初始选择的结果,这不是我想要做的。我只想从我的端点预加载结果的第一页,以便用户立即看到数据,而不是等待 AJAX 调用返回。这甚至可能吗?

我的 select2 设置代码如下:

$(".my-class-identifier").select2({

        ajax: {
            cache: true,
            dataType: "json",
            delay: 500, 
            data: function(params, page) {

                return {
                    name: params,
                    otherParams: $(this).data("other-params")
                    page: page                      
                };

            },
            results: function(data, page) {

                return {
                    /* The server returns no data after all the pages have been returned. */
                    more: data && data.length > 0,
                    results: data
                };

            },
            type: "GET",
            url: function() {
                if ($(this).data("url")) {
                    return $(this).data("url");
                } else {
                    return DEFAULT_ENDPOINT;
                }
            }
        },
        allowClear: true,
        minimumInputLength: 0,
        placeholder: "Search for some data..."          
    });
4

2 回答 2

1

所以你正在寻找的是初始化你的select2。Select2 有一个初始化选项来加载你的值,它看起来像这样:

    initSelection: function(element, callback){
        callback([
           {id:1,text:'one'},
           {id:2,text:'two'},
        ]);
    }

请务必将其添加到您的 ajax 调用之外,但在您的 select2 中。

JSFiddle 中的一个示例

于 2018-11-02T20:43:09.127 回答
0

在您的后端如何检查您的搜索字符串。如果大小为零或搜索字符串为空,则发回您的第一页结果。否则,进行搜索并返回结果。

于 2015-06-10T21:35:21.283 回答