编程语言
首页 > 编程语言> > javascript-select2中的processResult不起作用

javascript-select2中的processResult不起作用

作者:互联网

我使用select2加载远程数据,我发送了一个ajax请求并正确获取了响应,但是processResult不运行,并且不会显示任何内容

javascript代码:

var formatProduct= 
function(product) {
    console.log("formatProduct");
    if (product.loading) return product.text;
    var markup =  '<div class="product-to-compare" data=' + product.id + '>' + product.name + '</div>' ;
    return markup;
  }
var formatProductSelection = 
function (product) {
console.log("formatProductSelection");
return product.name || product.text;
}
$(".js-data-example-ajax").select2({
    placeholder: "Search for product",
    minimumInputLength: 2,
    ajax: {
        url: '/product/ajax_product_list/',
        dataType: 'json',
        quietMillis: 300,
        data: function (params) {
            var id = $('#product-no-1').attr('data') ;
            return {
                key: params,
                id: id
            };
        },
        processResults: function (data) {
        return {
            results: data.items
        };     
    },
    cache: true
  },
  escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
  minimumInputLength: 1,
  templateResult: formatProduct, // omitted for brevity, see the source of this page
  templateSelection: formatProductSelection // omitted for brevity, see the source of this page
});    

以及控制器返回的JSON作为响应:
 

{
"items": [
  {"id": "55dd980c8242b630cfaf4788", "name": "sallll"},
  {"id": "55d58d7a8242b62c6b88504e", "name" : "inja"}, 
  {"id": "55d58d558242b62c6b88504d", "name": "salam"}
  ]
}

解决方法:

您应该重命名JSON以返回文本而不是名称.

请注意,如果您使用的是select2(< 4)的旧版本,则应使用结果而不是processResults.

标签:jquery-select2,html,javascript
来源: https://codeday.me/bug/20191119/2038978.html