【问题标题】:Select2 not showing results, but successfully returning JSONSelect2 不显示结果,但成功返回 JSON
【发布时间】:2015-07-16 20:16:03
【问题描述】:

我正在使用带有 MVC4 的 Select2 jQuery 插件。我有我的 JavaScript 文件在我的控制器中以 JSON 格式获取数据,但是当我调试并尝试显示结果时出现错误:

Unable to get property 'toUpperCase' of undefined or null reference

我认为这可能与我返回的 JSON 有关,因为它看起来像对象或它们是整数的事实,但我并不完全确定。通过 ToString() 将它们转换为字符串也不起作用。 [{"name":1,"label":1,},{"name":2,"label":2},...]

这是我的 JS:

$("#ItemID").select2({
    ...
    ajax: {
    url: $("#ItemID").attr("data-getids"),
    dataType: "json",
    data: function (param) {
        return {query: param};},
    results: function(data) {
        return {results: data};}
    }
});

【问题讨论】:

  • 尝试打印 (param) 和 (data) 看看需要什么;并检查您的查询是否正确
  • searchterm 正在获取正确的值(搜索查询)。数据正在输出[object Object],[object Object]等。我不知道是对还是错。
  • 你在编码 JSON 吗?结果在您的网址中?
  • 我从通话中得到了 JSON。不幸的是,我在移动设备上并且很难进行格式化,但我展示了一个示例,说明我在 JS 代码之上得到了什么。不过,我最近才解决了我的问题。

标签: json jquery-select2


【解决方案1】:

我想通了。我使用的是旧版本的 select2 (3.4.5),我最终在结果函数中映射了 JSON。

results: function (data) {
    return {
        results: $.map(data, function (item) {
            return {text: item.name,
            id: item.id};
        };
    }),
}

【讨论】:

  • 别忘了保留id 属性!目前它不会被包含在内,因此您的结果将无法选择。
  • 感谢您提醒我——我昨天注意到了这一点,但我忘了修正我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2013-02-16
  • 2016-12-15
  • 1970-01-01
  • 2013-02-10
  • 2015-10-15
相关资源
最近更新 更多