【问题标题】:Select2 "TypeError: a is undefined" errorSelect2“TypeError:a未定义”错误
【发布时间】:2014-12-17 11:44:58
【问题描述】:

我有这段代码用于从输入字段创建Select2 元素:

var codigo_arancelario = $codigo_arancelario.val();

$codigo_arancelario.select2({
    placeholder: "Seleccione un estado",
    ajax: {
        dataType: 'json',
        url: function () {
            return Routing.generate('obtenerCodigoArancelario');
        },
        data: function (codigo_arancelario) {
            return {
                filtro: codigo_arancelario
            }
        },
        results: function (data) {
            var myResults = [];
            $.each(data.entities, function (index, item) {
                myResults.push({
                    'id': item.id,
                    'nombre': item.nombre
                });
            });
            return {
                results: myResults
            };
        }
    },
    formatNoResults: function () {
        return "No se encontró el código";
    },
    formatAjaxError: function () {
        return "No hay conexión con el servidor";
    }
});

但每当我尝试使用它时,我都会在 Firebug 控制台上收到此错误:

类型错误:a 未定义

我检查了响应头,我得到了一个Content-Type application/json,我还检查了请求头,因为我在服务器端使用了 Symfony2,它发送了X-Requested-With XMLHttpRequest。 Symfony2 函数返回一个像这样的 JSON:

{
   "valid":false,
   "entities":[
      {
         "id":101,
         "codigo":"4545",
         "descripcion":null
      },
      {
         "id":102,
         "codigo":"45455",
         "descripcion":"gfhgfhfghfgh"
      },
      {
         "id":103,
         "codigo":"45457",
         "descripcion":"etert"
      }
   ]
}

我的代码错误在哪里?

【问题讨论】:

标签: javascript jquery json jquery-select2


【解决方案1】:

Select2 期望 [{text="john doe",id="1"},{text="jane doe",id="2"}]

所以您需要将'nombre': item.nombre 更改为'text': item.nombre 它应该如下所示:

 myResults.push({
       'id': item.id,
       'text': item.nombre
 });

【讨论】:

  • @ReynierPM item.nombre 未定义我认为你需要item.descripcion
【解决方案2】:

可能是您的数据格式错误:
数据 类型:PlainObject 或字符串或数组 要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅 processData 选项以防止此自动处理。对象必须是键/值对。如果 value 是一个 Array,jQuery 会根据传统设置的 value 序列化多个具有相同 key 的值(如下所述)。

jquery for ajax

【讨论】:

  • 然后呢?我没有关注你或认为这对你没有帮助,抱歉
  • 在断点处使用调试: var myResults = [];打印堆栈值的结果。
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 2013-01-07
  • 2016-02-11
  • 2012-12-17
  • 1970-01-01
  • 2022-08-08
  • 1970-01-01
相关资源
最近更新 更多