使用PHP中的JSON数据填充jQuery Select2()控件

Lel*_*eta 0 javascript php arrays jquery-select2

我已经做了好几次同样的事情(实际上也在同一个项目上)并且它工作正常.我对这个相同代码的实例有一个问题.首先,我从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);
Run Code Online (Sandbox Code Playgroud)

这给了我一个像这样的数组(只是前几个项目):

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
        )
)
Run Code Online (Sandbox Code Playgroud)

然后我在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 });
Run Code Online (Sandbox Code Playgroud)

怎么了?为什么我不能用这个数组用数据填充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"}
]
Run Code Online (Sandbox Code Playgroud)

Jos*_* P. 6

要进行调试,请使用console.dir(azioni);检查对象.

将您id_azdescrizione密钥更改为idtext

var data = [{ id: 0, text: 'item1' }, { id: 1, text: 'item2' }];

$(".js-example-data-array").select2({
  data: data
})
Run Code Online (Sandbox Code Playgroud)

https://select2.github.io/examples.html

默认情况下,jquery select2期望数据采用id/text格式.