我已经多次做了同样的事情(实际上也是在同一个项目上)并且工作正常。我对这个相同代码的实例有一个问题。 首先,我从db表中选择一些数据:
$azioni = $pdo->query("SELECT id_az, concat_ws('-',Descrizione, RGE) as descrizione
FROM azioni_head
JOIN sofferenze ON sofferenze.id_soff = azioni_head.id_soff
ORDER BY Descrizione")
->fetchAll(PDO::FETCH_ASSOC);
这给了我一个像这样的数组(只是前几项):
Array
(
[0] => Array
(
[id_az] => AZ000000126
[descrizione] => Acciaierie Weissenfels S.p.A.-n/d
)
[1] => Array
(
[id_az] => AZ000000017
[descrizione] => Acofer S.p.A.-n/d
)
)
然后我在Json数组中转换此数组:
var azioni = <?php echo json_encode($azioni); ?>;
最后我用这些数据填充了Select2,但这次select2里面没有任何项目。
如果我在使用alert(azioni.join( ));
编码后尝试查看数组,我得到:
[object Object],[object Object],[object Object],[object Object],
最后我跑:
$('#cod_az').select2({ placeholder: "Scegli", data: azioni });
有什么问题?为什么我不能用这个数组用数据填充Select2?它适用于我的应用程序的其他部分!
修改 这是firebug中console.log(azioni)的结果:
[
Object { id_az="AZ000000126", descrizione="Acciaierie Weissenfels S.p.A.-n/d"},
Object { id_az="AZ000000017", descrizione="Acofer S.p.A.-n/d"},
Object { id_az="AZ000000039", descrizione="ADANI SAS DI ADANI PAOLO & C. S.p.A.-n/d"},
Object { id_az="AZ000000019", descrizione="Administration Speciale ...NG S.A. en faillite-n/d"}
]
答案 0 :(得分:6)
要进行调试,请使用console.dir(azioni);
检查对象。
将您的id_az
和descrizione
密钥更改为id
和text
var data = [{ id: 0, text: 'item1' }, { id: 1, text: 'item2' }];
$(".js-example-data-array").select2({
data: data
})
https://select2.github.io/examples.html
默认情况下,jquery select2期望数据采用id / text格式。
答案 1 :(得分:0)
这是标准和期望的行为。你想要的是检查对象的内容而不是获取[object Object]
字符串,这是toString()
方法的正确结果。
有几种方法可以在Javascript中检查数组和对象的结构。我做的很简单,效果很好但是它里面有一些扭曲。
var data = JSON.parse(input);
// data now contains the JSON data
// to print it on-screen I do:
alert(JSON.stringify(data));
将数据重新编码为JSON可能听起来很奇怪,但您已完全转入:
因此,您确实可以确信input
字符串是有效的JSON,而您在alert()
中看到的是实际内容。我不知道比这更简单的方法。
编辑:请注意,这与直接打印input
字符串不同。 decode / recode 转向确实为您做了很多工作:它表明它可以解码JSON并向您展示解码后的实际情况。例如,不保留属性的顺序。