jQuery UI AutoComplete从变量解析数据

时间:2010-12-09 19:43:21

标签: jquery jquery-ui autocomplete

我正在尝试使用jQuery UI自动完成功能,但似乎无法将两个和两个放在一起。

我有一个用于所有json数据请求的php页面。我使用switch语句来确定在发出请求时要触发哪个函数,使用post将此数据传递给php页面,即; “AutoComplete”传递给页面,然后告诉它从我的数据库中检索特定的表,然后将其编码为json。

数据格式如下:[“1”:“电子邮件”,“2”:“托管”]等等。 json数据中有可变数量的项目,但始终使用key =>值对。我需要键是字段的值,以及要在自动完成列表中显示的值。 (如果需要,可以反转数据顺序,这只是一个例子)。

每次有人在框中输入某些字符时,我都不需要或希望自动完成功能点击此数据库,所以我试图只生成此字段所需选项的静态列表并将其分配给用于autocomplete()的javascript对象。

function myFunction (DataType, ID) {
    $j.ajax({
        type: 'POST',
        cache: 'false',
        url: 'json.php',
        data: {jsonFunction:DataType},
        success: function(data){ 
               $j(ID).autocomplete({ source: [data] });
             }
        });
};

然后在我的document.ready()函数中调用该函数:

myFunction ("AutoComplete", "input#Type");

所以我需要的是能够从ajax请求创建一个自动完成可以用作其选项的变量。我只是想不通如何让这个工作!我已经尝试了几种不同的方法无济于事,包括使用我在这里和其他地方看过的几个例子来解析数据。 ui自动完成的文档声明您可以使用具有键值对的数组,但它无论我的数据格式如何都不喜欢我的数据。

我很遗憾,我很清楚。

2 个答案:

答案 0 :(得分:0)

嗯,这是非常糟糕的做法,但你可以使用eval()。只需使用javascripts快速对象表示法(jQuery使用的大括号)

更好的解决方案 - 缓存数据库(假设)查询

答案 1 :(得分:0)

您是否尝试过将jjax调用的dataType选项设置为json?请参阅此处的文档:http://api.jquery.com/jQuery.ajax/