jQuery UI自动完成从变量解析数据
我试图使用jQueryUIAutoComplete,但似乎无法将二和二放在一起 我有一个php页面,用于所有json数据请求。我使用switch语句确定在发出请求时启动哪个函数,使用post将数据传递到php页面,即;AutoComplete被传递到页面,然后页面告诉它从我的数据库中检索一个特定的表,然后将其编码为json 数据的格式如下:[1:电子邮件,2:托管]等等。json数据中有数量可变的项,但总是使用key=>value对。我需要的关键是该字段的值,并在自动完成列表中显示的值。如果需要,数据顺序可以颠倒,这只是一个例子 我不需要也不希望每次有人在框中键入某些字符时自动完成功能都会命中此数据库,因此我尝试生成此字段所需选项的静态列表,并将其分配给javascript对象,以便与自动完成一起使用jQuery UI自动完成从变量解析数据,jquery,jquery-ui,autocomplete,Jquery,Jquery Ui,Autocomplete,我试图使用jQueryUIAutoComplete,但似乎无法将二和二放在一起 我有一个php页面,用于所有json数据请求。我使用switch语句确定在发出请求时启动哪个函数,使用post将数据传递到php页面,即;AutoComplete被传递到页面,然后页面告诉它从我的数据库中检索一个特定的表,然后将其编码为json 数据的格式如下:[1:电子邮件,2:托管]等等。json数据中有数量可变的项,但总是使用key=>value对。我需要的关键是该字段的值,并在自动完成列表中显示的值。如果需要
function myFunction (DataType, ID) {
$j.ajax({
type: 'POST',
cache: 'false',
url: 'json.php',
data: {jsonFunction:DataType},
success: function(data){
$j(ID).autocomplete({ source: [data] });
}
});
};
然后在我的文档中调用该函数。就绪函数:
myFunction ("AutoComplete", "input#Type");
所以我需要的是能够从ajax请求中创建一个变量,autocomplete可以将其用作选项。我就是想不出怎么让它工作!我尝试了几种不同的方法,但都无济于事,包括使用我在这里和其他地方看到的几个示例解析数据。ui autocomplete的文档说明,您可以使用带有键值对的数组,但它只是不喜欢我的数据,无论其格式如何
我确信我遗漏了一些明显的东西。嗯,这是一个非常糟糕的做法,但你可以使用eval。只需使用javascripts快速对象表示法,就像jQuery使用的大括号一样
更好的解决方案-缓存数据库假设查询您是否尝试过将ajax调用的dataType选项设置为json?请参见此处的文档:是的,我已经完成了。这似乎没有什么不同。似乎autocomplete本身无法解析json数据。我不知道如何清理数据,以便autocomplete能够使用它。关于它的文档充其量是稀疏的,我在这里看到了几个关于手动解析的答案,我就是不能让它为我工作。我从这个小部件中得到的最好的结果是所有选项都显示在文本字段下的一行中。我将研究如何缓存我的数据库查询。这可能会奏效。我希望尽可能多地删除服务器上不必要的负载,但仍然提供动态功能,如自动完成功能。缓存查询比使用javascript做一些花哨的事情更有意义。SQL通常是一种快速的语言名称,另一种可以在毫秒内搜索1M条记录的语言:。我不知道你们的服务器型号,但请仔细研究一下。它会自动为您优化查询和缓存。这是一个我经常使用的PHP ORM更新,但从未解决过。我放弃了使用AutoCompletejQueryUI,因为我无法让它正常工作。我改为使用程序生成的选择框: