jquery tokeninput:如何传递动态数组以进行自动完成

时间:2015-01-13 22:14:27

标签: jquery-plugins jquery-tokeninput

使用tokenInput,我的自动完成功能不会返回,我找不到原因。

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

我得到了一个类似的数组:

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

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

$contacts_url =http_build_query($contacts);

返回:

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我看到:

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

我认为看起来不错

但是自动完成没有返回任何内容:(

非常感谢任何帮助!

非常感谢

2 个答案:

答案 0 :(得分:0)

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

更好的方法是本地化,如下所示:

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

答案 1 :(得分:0)

$(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' });