2014-10-22 99 views
5

我有这个代码创建从输入字段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的控制台上的错误:

TypeError: a is undefined

我检查响应头,我得到了一个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" 
     } 
    ] 
} 

我的代码的错误在哪里?

+0

@MohitArora没有双方有数据。示例JSON是什么'data.entities'有 – ReynierPM 2014-10-22 04:52:50

+1

http://jsfiddle.net/arunpjohny/e39ftb64/1/ – 2014-10-22 07:10:30

回答

5

选择二预计[{text="john doe",id="1"},{text="jane doe",id="2"}]

,所以你需要改变'nombre': item.nombre'text': item.nombre 它应该看起来像如下:

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

仍然收到相同的错误 – ReynierPM 2014-10-22 05:12:01

+1

@ReynierPM'item.nombre'未定义我认为你需要'item.descripcion' – 2014-10-22 05:23:51

-1

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

看到jquery for ajax

+0

而且?我不关注你,或者没有发现这有帮助,对不起 – ReynierPM 2014-10-22 04:59:17

+0

在断点处使用调试:var myResults = [];打印堆栈值的结果。 – 2014-10-22 05:00:35