使用PHP数组进行jQuery自动完成

时间:2013-09-08 17:44:13

标签: php javascript jquery autocomplete jquery-autocomplete

我有一个客户列表,我希望能够在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
)

请注意,索引是指客人的身份证。

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

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

我在文档中注意到数据源通常采用

之类的格式
var guests = [guest_a, guest_b, guest_c];

请记住,index是指客人的ID,因此我需要使用此号码来确保选择了正确的客人,如果恰好有两位同名的客人

所以,这是自动填充框的javascript / jquery

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

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

1 个答案:

答案 0 :(得分:4)

使用

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

而不是

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

如果访客姓名是唯一的,您可以使用array_search来查找ID