JSON不会在自定义模板中显示

时间:2018-01-10 06:30:44

标签: jquery-select2

我有一个Select2框,可以通过PHP成功搜索并返回JSON结果,但不能正确显示。我得到的只是"未定义 - 未定义"。 Here's a screenshot.

这是返回的JSON:{"hash":"5304c7399a0e169572b01d1123db3de3","donorname":"John Smith","nbid":"4"}

这是我对Select2的Javascript调用:

function formatdonorList (data) {
  var donors = "<div class='select2-result-listsitory clearfix'>" +
    "<div class='select2-result-listsitory__meta'>" +
      "<div class='select2-result-listsitory__title'>" + data.donorname + " &mdash; " + data.hash + "</div>";
    "</div>";
  return donors;
}

function formatdonorListSelection (list) {
  return list.donorname;
}   

$(".donorsearch").select2({
  ajax: {
    url: "/list-donor-data.php",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      //var paramsterm = params.term;
      return {
        query: params.term, // search term
      };
    },
    processResults: function (data) {
      return {
        results: data,
      };

    },
    cache: true
  },
  escapeMarkup: function (donors) { return donors; },
  minimumInputLength: 1,
  templateResult: formatdonorList,
  templateSelection: formatdonorListSelection
});

感谢。

1 个答案:

答案 0 :(得分:0)

请检查Data format for Select2.js(版本4)并查看 id字段是否必要

所以必须调整processResults

    processResults: function (data) {
      return {
        results: $.map(data.results, function(obj, index) {
          return {
            id: obj.nbid,
            donorname: obj.donorname,
            hash: obj.hash
          };
        })
      };
    },

这是一个小提琴(ajax模拟):http://jsfiddle.net/beaver71/v9bz0xfw/

P.S。:在jsFiddle模拟数据中,ajax发布到/echo/服务并作为data.results返回;适应你的情况