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"}
  ]
}

原文由 MDK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 553
2 个回答

您应该重命名您的 JSON 以返回 text 而不是 name

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

原文由 uri2x 发布,翻译遵循 CC BY-SA 3.0 许可协议

在我的例子中,我正在刷新页面并寻找发送来获取搜索数据的 http 请求。因此,请务必搜索 processResult 被呼叫。

原文由 ruwan800 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏