【问题标题】:Using PHP array for jQuery autocomplete使用 PHP 数组进行 jQuery 自动完成
【发布时间】:2013-09-12 06:18:56
【问题描述】:

我有一个来宾列表,希望能够在 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?

【问题讨论】:

    标签: php javascript jquery autocomplete jquery-autocomplete


    【解决方案1】:

    使用

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

    而不是

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

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

    【讨论】:

    • 表示意外标识符。但是,还有另一个问题。没有说明客人是名字,姓氏格式是我的错。我想我可能需要重新构建它,或者只是删除名字和姓氏之间的逗号。
    • 您不需要更改格式,所以我更改了代码以将名称、lastame 放在引号中。请使用新代码
    • 谢谢,虽然这行得通,但我仍然需要跟踪我在帖子中提到的客人 ID。我可以以某种方式附加一个隐藏字段吗?以前我使用一个选择列表,并会在提交表单时发送客人的 ID 而不是他们的姓名。我可以这样做吗?提交表单后,我需要发送客人的 ID,这是数组的索引值。非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    相关资源
    最近更新 更多