无法格式化json数据以在自动完成中使用它

时间:2016-11-15 07:09:54

标签: javascript jquery json ajax

我想在文本框中使用自动完成功能,我正在进行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"}
]]

4 个答案:

答案 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()