好吧,我的脑子就在这上面(我很可怕)但是我已经尝试过尽我所能,但仍然无法让它发挥作用 .
试图用jquery ui做自动完成
我的json看起来像这样
{"dealers":
{
"1156":"dealer 1",
"1122":"dealer 2",
"1176":"dealer 3",
"1491":"dealer 4",
"1463":"dealer 5",
"269":"dealer 6"
}
}
我试图使用此信息作为自动完成的来源 . 我得到的响应对象很好我只是遇到了正确的格式,所以我可以将“###”放在一个隐藏的字段中,该字段与“值”相关联,需要显示为“值”落下 .
一直在尝试百万种不同的方式,但最近的尝试是在下面
function ajaxCall() {
$.getJSON("/example/location/example.json?term=" + $('#dealerName').val(),
function(data) {
$.each(data.dealers, function(k, v) {
alert(k + ' : ' + v);
});
});
}
$('#dealerName').autocomplete({
source: ajaxCall,
minLength: 2,
delay: 100
});
拜托,谢谢!
3 回答
您需要以jQueryUI期望的格式将要返回的对象转换为数组 .
您可以使用$.map将
dealers
对象转换为该数组 .请注意,当您选择项目时,"key"将被放置在文本框中 . 您可以通过调整
$.map
的回调函数返回的label
和value
属性来更改此设置 .或者,如果您可以访问生成JSON的服务器端代码,则可以更改返回数据的方式 . 只要数据:
是具有
label
属性,value
属性或两者的对象数组,或者是一个简单的字符串数组
换句话说,如果您可以格式化数据,如下所示:
或这个:
然后你的JavaScript变得更简单:
我知道它已经得到了解答 . 但我希望这将有助于将来的某些人,并节省大量的时间和痛苦 .
完整的代码如下:这是我为文本框做的,使其在CiviCRM中自动完成 . 希望它可以帮到某人
关于我如何在自动完成中将数据返回到此jquery ajax调用的PHP代码:
我用这个脚本进行自动完成...
我的json返回: -
[{"label":"Mahesh Arun Wani","value":"1"}]
搜索后m
但它显示在下拉列表
[object object]
...