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 是正确的,事实上,我从服务器获得了结果(我在“post”选项卡中从 Firebug 中检查了它)但没有显示

4

1 回答 1

1

自动完成需要在数据中返回一个label和/或字段。value

数组:数组可用于本地数据。有两种支持的格式:

字符串数组:[ "Choice1", "Choice2" ]

具有标签和值属性的对象数组: [ { label: "Choice1", value: "value1" }, ... ]

标签属性显示在建议菜单中。当用户选择一个项目时,该值将被插入到输入元素中。如果只指定了一个属性,它将用于两者,例如,如果您只提供值属性,则该值也将用作标签。

value调整您的查询以在和/或label字段的自动完成中返回您想要的内容。

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

或者,其他一些返回值的方法,例如上面文档中的粗体示例。例如,您可以在成功函数中设置labelvalue字段:

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