我想在文本框中使用自动完成功能,我正在进行ajax调用以获取JSON,我想用它来自动完成文本框标记,但数组项目结果是[对象对象因为JSON的id属性是不可访问的,我想知道是否有任何方法可以摆脱这个问题
var items;
$( document ).ready(function() {
$("#header").load("Header.html");
$("#footer").load("Footer.html");
var url= "GetAuthorities.do";
$.getJSON( flickerAPI, {
tags: "mount rainier",
tagmode: "any",
format: "json"
})
.done(function( data ) {
items=data;
});
$("#tags").autocomplete({
source:items,
label:items.id,
value:items.value
})
});
<td width="30%"><input type="text" name="IrbAppNum" id="IrbAppNum" style="width:40%"> <input id="tags"></td>
在ajax调用之后我得到了这个JSON:
[[
{"id":"1","value":"Stanford University"},
{"id":"2","value":"University of Houston"},
{"id":"3","value":"FDA"},
{"id":"4","value":"Drug Authority of Texas"}
]]
答案 0 :(得分:1)
更改
items=data;
到
items=data[0];
答案 1 :(得分:1)
您需要稍微修改.done()
处理程序,如下所示:
var items;
$( document ).ready(function() {
$("#header").load("Header.html");
$("#footer").load("Footer.html");
var url= "GetAuthorities.do";
$.getJSON( flickerAPI, {
tags: "mount rainier",
tagmode: "any",
format: "json"
})
.done(function( data ) {
if(data && data.length > 0){
items=data[0]; //grab the data which is at index 0
//init the autocomplete widget here
$("#tags").autocomplete({
source:items,
label:items.id,
value:items.value
});
}
});
});
这里我们通过读取接收对象的索引0并将items
窗口小部件作为其autocomplete
异步调用启动,将返回的数据分配给ajax
变量。在.done
处理程序之外定义它会使items
变量未定义,并且您在自动填充文本框的搜索结果中无法获得任何内容。
答案 2 :(得分:0)
使用
items=data[0];
由于其数组的对象数组(2d数组)。 和 source 只需要对象数组。
答案 3 :(得分:0)
Driver::getVersion()