1

Jquery オートコンプリートを使用しており、次のコードがあります。

クライアント側:

    $( "#tags" ).autocomplete({
    source: function(request, response) {
        $.ajax({
            url: "get_professionals",
            data: request,
            dataType: "json",
            type: "POST",
            success: function(data){
                alert("hello");
            }
        });
    }  
});

サーバ側:

function get_professionals() {
    if ($_POST["term"]):
        $professionals = Professional::find('all', array('conditions' => "name LIKE '%" . $_POST["term"] . "%'"));
        foreach ($professionals as $professional):
            echo $professional->to_json();
        endforeach;  
    endif;
}

URLは正しく、実際、サーバーから結果を取得します(「投稿」タブのFirebugから確認しました)が、表示されません

4

1 に答える 1

1

オートコンプリートでは、データにlabeland/orvalueフィールドが返される必要があります。

配列: 配列はローカル データに使用できます。次の 2 つの形式がサポートされています。

文字列の配列: [ "Choice1", "Choice2" ]

label プロパティと value プロパティを持つオブジェクトの配列: [ { label: "Choice1", value: "value1" }, ... ]

label プロパティが提案メニューに表示されます。ユーザーが項目を選択すると、値が入力要素に挿入されます。プロパティを 1 つだけ指定すると、両方に使用されます。たとえば、値プロパティのみを指定すると、その値がラベルとしても使用されます。

valueおよび/またはlabelフィールドのオートコンプリートで必要なものを返すようにクエリを調整します。

SELECT name AS label, id AS value from professionals.....

または、上記のドキュメントの太字の例のような値を返す他のメソッド。たとえば、success 関数でlabelおよびフィールドを設定できます。value

success: function(data) {
    response($.map(data, function(item) {
        return {
                label: item.name,
                id: item.id
                };
        }));
      }
于 2012-11-02T01:53:46.273 に答える