jquery tokeninput : 如何为自动完成传递一个动态数组

jquery tokeninput : how to pass a dynamic array for autocompletion

使用 tokenInput,我的自动完成 returns 什么也没有,我也不知道为什么。

首先,我查询数据库以查找已连接用户的所有联系人。

我得到一个数组,例如:

$contacts = Array( [0] => Array ( [id] => 1 [name] => John ) [1] => Array ( [id] => 3 [name] => Peter ) )

然后我使用 http_build_query 因为我想通过 URL 传递数组:

$contacts_url =http_build_query($contacts);

其中 returns :

print_r($contacts_url)= 0%5Bid%5D=1&0%5Bname%5D=John&1%5Bid%5D=3&1%5Bname%5D=Peter

然后我使用 tokenInputs,并通过 url 发送我的数组:

$(document).ready(function () {
    $("#my-text-input").tokenInput("<?php echo $this->webroot.'populate.php?'.$contacts_url ?>", {theme: "facebook"});
});

populate.php 页面包含:

<?php
    header('Content-type: text/javascript');
    $a= $_GET;
    $json_string = json_encode($a);
    echo $json_string;
?>

如果我打开php页面../populate.php?0%5Bid%5D=1&0%5Bname%5D=John&1%5Bid%5D=3&1%5Bname%5D=Peter i见:

[{"id":"1","name":"John"},{"id":"3","name":"Peter"}]

我觉得好看

但是自动补全returns什么都没有:(

非常感谢任何帮助!

非常感谢

默认情况下,搜索参数也作为 $GET 变量发送,我想这会弄乱您的 JSON 编码。

更好的方法是在本地执行此操作,如下所示:

$(document).ready(function () {
    $("#my-text-input").tokenInput("<?php echo json_encode($contacts) ?>", {theme: "facebook"});
});
$(document).ready(function() {
            $("#searchword").tokenInput(            

    /* Given that $json_res = json_encode($user_arr); in the PHP. 
Using <?php echo $json_res ?> OR <?php echo json_encode($user_arr) ?> without quotes and blocks gives the same result. 

    The other way is to define var ar =<?php echo $json_res?>; in JS and pass it as .tokenInput(ar, {} */

               <?php echo $json_res ?>
            , {
                propertyToSearch: "username",
                theme: "facebook",
                preventDuplicates: true,
                excludeCurrent: true                    
            });
    });      

// 如果 JSON 文件有 [{"id":"856","product":"sample1"}, {"id":"1035" ,"product":"sample product 2"}],执行如下:

$('#product_tokens').tokenInput('/products.json', { propertyToSearch: 'product' });