1

我有一个来宾列表,我希望能够在 jQuery 自动完成中使用,但我似乎无法获得正确的格式。我正在使用 CakePHP 2.3.8 并有一个从我的控制器发送来查看的来宾列表。当我在文本框中输入时,出现以下错误

//in reference to source of the elements to populate the autocomplete list
Property 'source' of object [object Object] is not a function 

我在这里搜索了这个错误,但我找不到与转换 PHP 数组相关的任何内容,同时还考虑了该项目的索引号。我有一个格式为的 PHP 数组

echo "<pre>"; print_r($guest_list); echo "</pre>"; 
//results in the following, where the index is the guest's ID
array(
    [1] => guest a,
    [2] => guest b,
    [3] => guest c
)

请记住,索引指的是客人的 ID。

我使用 json_encode 来转换 php $guests 数组,结果为以下格式

var guests = {"1":"guest a","2":"guest b","3":"guest c"};

我在文档中注意到数据源通常采用如下格式

var guests = [guest_a, guest_b, guest_c];

记住索引指的是客人的ID,所以我需要使用这个数字来确保选择了正确的客人,如果碰巧有两个同名客人

所以,这是自动完成框的 javascript/jquery

var guests = <?php echo json_encode($guest_list); ?>;
$(function() {
    $( "#guests_autocomplete" ).autocomplete({
      source:  guests
    });
});

如何正确格式化我的客人数组以使用自动完成功能并仍然跟踪客人的 ID?

4

1 回答 1

4

利用

var guests = ["<?php echo  implode('","',$guest_list); ?>"];

代替

var guests = <?php echo json_encode($guest_list); ?>;

如果客人姓名是唯一的,您可以使用它array_search来查找 id

于 2013-09-08T18:24:58.803 回答