javascript – select2 4.0 AJAX预填充howto?

我已经阅读过this,this,this并根据文档the most important here,但它们都不适用于我.
我正在尝试使用AJAX select2.我正在尝试制作一个通用的“选择”项目.

因此,对于具有data-select2-json属性的所有元素,我将select2应用于data-select2-json值中的ajax URL.

$('[data-select2-json!=""][data-select2-json]').each(function() {
    var url = $(this).attr('data-select2-json');
    var pg_size = $(this).attr('data-select2-page-size') | 30;
    $(this).select2({
        language: language_code,tokenSeparators: [',',' '],ajax: {
            url: url,dataType: 'json',delay: 300,data: function (params) {
                return {
                    q: params.term,// -> q=[search term]
                    page: params.page // -> page=[no page]
                };
            },processResults: function (data,params) {
                params.page = params.page || 1;
                console.log(data.items);
                return {
                    results: data.items,pagination: {
                      more: (params.page * pg_size) < data.total
                    }
                };
            },cache: true
        },// let our custom formatter work
        escapeMarkup: function (markup) { return markup; },minimumInputLength: 1,templateResult: formatRepo,templateSelection: formatRepoSelection
    });
});

它运作良好!

works well

服务器发送的JSON总是这样格式化:

{"items":
    [{"item": "Fran\u00e7ais","id": 1},{"item": "Finlandais","id": 5},{"item": "Chinois simplifi\u00e9","id": 15}
    ],"total": 3}

它非常接近您can find in the documentation的AJAX示例.我的问题是AJAX initiatilize:我想要在HTML中添加值:

我还添加了第二个认选择选项:

如果您看一下小提琴,您会看到它如何运作您希望您的工作方式.

您没有包含templateSelection的代码:formatRepoSelection方法.我的猜测是方法是导致问题的原因.示例页面上使用的代码是:

function formatRepoSelection(repo) {
  return repo.full_name || repo.text;
}

虽然我不知道你的formatRepoSelection代码是什么,但我认为如果你把它改成如下,你的问题将会解决

function formatRepoSelection(repo) {
  return repo.item;
}

相关文章

jQuery表单验证提交:前台验证一(图文+视频)
jQuery表单验证提交:前台验证二(图文+视频)
jQuery如何实时监听获取input输入框的值
JQuery怎么判断元素是否存在
jQuery如何实现定时重定向
jquery如何获取复选框选中的值