Select2和JSON数据

时间:2015-03-31 23:24:00

标签: json xpages jquery-select2

我使用的是select2版本4,我在XPage上有一个REST服务控件,它从names.nsf中读取fullname列。

我的搜索工作正常,但出于某种原因,我没有得到我可以选择的值列表。

返回的JSON对象如下所示:

[{"@entryid":"1376-E6D5EBE8ADBEFA7088257DF8006E4BA2","fullname":"Full Name\/OU\/O"},{"@entryid":"1375-FD1CB92A13BFD0E088257DE4006756D7","fullname":"Another Full Name\/OU\/O"}]

初始化select2的代码如下所示:

x$( "#{id:comboBox1}" ).select2({
  ajax: {
   url: "xJSON.xsp/names",
   dataType: 'json',
   delay: 250,
    data: function (params) {
      return {
      search:'[fullname=]*'+params.term+'*',       
      //  q: params.term, // search term
        page: params.page
      };
    },

    results: function (data, page){

    },
    processResults: function (data, page) {
      // parse the results into the format expected by Select2.
      // since we are using custom formatting functions we do not need to
      // alter the remote JSON data
      console.log(data);
      return {
        results: data
      };
    },
    cache: true
  },
  //escapeMarkup: function (markup) { return markup; }, 
  minimumInputLength: 1
});

当我查看浏览器的控制台时,我可以看到搜索工作正在返回JSON对象,但是,我没有得到可供选择的值列表。

对于结果返回我已经尝试过结果:data.fullname和results:data,text:'fullname'但没有任何反应。

我在做什么?

2 个答案:

答案 0 :(得分:2)

您需要切换JSON响应以包含每个对象的idtext,或者在processResults方法中重新映射它们。现在在Select2 4.0中的所有可选对象上These two properties are required。由于我假设您无法更改JSON响应,或者它没有意义,您可以使用以下processResults方法轻松地重新映射数据。

processResults: function (data) {
  var data = $.map(data, function (obj) {
    obj.id = obj.id || obj["@entityid"];
    obj.text = obj.text || obj.fullname;

    return obj;
  });

  return {
    results: data
  };
});

这会将@entityid属性映射到id属性,将fullname属性映射到text属性。因此,选择将发送到包含@entityid的服务器,并将使用fullname显示。


此外,Select2 4.0中不再需要results方法。这已重命名为当前的processResults方法。

答案 1 :(得分:0)

我完全按原样复制了您的代码,只是更改了fieldname和搜索查询,并且运行得很好。

这是我的JSON看起来像

[{"@entryid":"1482-AD112B834158AD0D80257E4B004EC42E","@unid":"AD112B834158AD0D80257E4B004EC42E","id":"Victor Hunter","text":"Odhran Patton"},{"@entryid":"1496-291F2480D806A91E80257E4B004EC3D2","@unid":"291F2480D806A91E80257E4B004EC3D2","id":"Wesley O'Meara","text":"Wesley O'Meara"},{"@entryid":"1421-CC19D06880F5DC2980257E4B004EC537","@unid":"CC19D06880F5DC2980257E4B004EC537","id":"Stephen Woods","text":"Emma Doherty"}]

我所知道的是select2期望来自id text JSON 参数