[英]Select2 “TypeError: a is undefined” error
我有以下代码用于从输入字段中创建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未定义
我检查了Response标头,并得到了Content-Type application/json
并且还检查了Request标头,因为我在服务器端使用了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"
}
]
}
我的代码中的错误在哪里?
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
});
可能是您的数据格式错误:
数据类型:PlainObject或String或Array要发送到服务器的数据。 如果还不是字符串,则将其转换为查询字符串。 它被附加到GET请求的URL上。 请参阅processData选项以防止这种自动处理。 对象必须是键/值对。 如果value是一个Array,则jQuery会根据传统设置(如下所述)的值,使用相同的键序列化多个值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.