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 を参照することに注意してください。同じ名前のゲストが 2 人いる場合は、この番号を使用して正しいゲストが選択されていることを確認する必要があります。

したがって、オートコンプリート ボックスの 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 に答える