2012-05-21 98 views
0

我有这种类型的json输入。 [{“id1”:“val1”,“id2”:“val2”},{“id1”:“val3”,“id2”:“val4”},...]jquery-ui - 自动填充json数据

如何解析这里面的自动完成插件jquery-ui中可用?基本上我希望对应于id1的val1,val3等成为我的自动完成文本的一部分。关于如何继续操作的任何建议?

+0

这是从远程或本地数据源?你能显示你的自动完成代码吗? –

+0

它来自我从我的sql表中准备的本地数据源。实际上,当用户输入某些内容时,我不想每次启动“喜欢”查询。 –

回答

1

自动完成插件期望简单的字符串值或对象的具有属性labelvalue或两者的阵列。

您可以使用$.map实用程序函数将您的数据转换为适当的格式。这是假设你成功地使你的AJAX请求和数据回来:

$.getJSON("/url", function(data) { 
    var src = $.map(function (el) { 
     return el.id1; 
     // or: 
     // return { label: el.id1, value el.id2 }; 
    }); 

    $("#id").autocomplete({ 
     source: src 
    }); 
}); 

例子:http://jsfiddle.net/df6wB/

+0

谢谢!!它确实有效,我也在考虑应该为数组元素设置一些映射关系,谢谢你的回答。 :) –

+0

@AnkitGarg:真棒!请[接受答案](http://meta.stackexchange.com/q/5234/153691),如果它帮助。 –

0

要将JSON字符串转换为JSON对象,请使用$.parseJSON(...)。 这里var jsonstring是包含JSON文本而没有别的文本。如果字符串不是有效的JSON,则parseJSON()将失败。

var jsonobj = $.parseJSON(jsonstring); 

然后用它来插入new options自动完成。从jsonobj这样

获取值:

alert(jsonobj.id1); 
alert(jsonobj.id2); 
+0

这里jsonstring是我在之前的文章中定义的数组。我想这个数组,但jsonobj被返回为null。任何指针在这? –

+0

如果它已经是对象,那么你不需要'$ .parseJSON()',你应该在你的问题中添加更多的细节来获得更好的答案。 **几行源代码的价值超过千字。** –

+0

我使用这个 '$(document).ready(function(){ var sA = []; $ .getJSON(“URL to我的json对象数组“,函数(data){.each(data,function(i,val){sA.push(val.v); }); $(”#id“)。autocomplete {source:sA,minLength:2,cache:false});' –