我有这种类型的json输入。 [{“id1”:“val1”,“id2”:“val2”},{“id1”:“val3”,“id2”:“val4”},...]jquery-ui - 自动填充json数据
如何解析这里面的自动完成插件jquery-ui中可用?基本上我希望对应于id1的val1,val3等成为我的自动完成文本的一部分。关于如何继续操作的任何建议?
我有这种类型的json输入。 [{“id1”:“val1”,“id2”:“val2”},{“id1”:“val3”,“id2”:“val4”},...]jquery-ui - 自动填充json数据
如何解析这里面的自动完成插件jquery-ui中可用?基本上我希望对应于id1的val1,val3等成为我的自动完成文本的一部分。关于如何继续操作的任何建议?
自动完成插件期望简单的字符串值或对象的具有属性label
,value
或两者的阵列。
您可以使用$.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
});
});
谢谢!!它确实有效,我也在考虑应该为数组元素设置一些映射关系,谢谢你的回答。 :) –
@AnkitGarg:真棒!请[接受答案](http://meta.stackexchange.com/q/5234/153691),如果它帮助。 –
要将JSON字符串转换为JSON对象,请使用$.parseJSON(...)
。 这里var jsonstring
是包含JSON文本而没有别的文本。如果字符串不是有效的JSON,则parseJSON()
将失败。
var jsonobj = $.parseJSON(jsonstring);
然后用它来插入new options自动完成。从jsonobj
这样
获取值:
alert(jsonobj.id1);
alert(jsonobj.id2);
这里jsonstring是我在之前的文章中定义的数组。我想这个数组,但jsonobj被返回为null。任何指针在这? –
如果它已经是对象,那么你不需要'$ .parseJSON()',你应该在你的问题中添加更多的细节来获得更好的答案。 **几行源代码的价值超过千字。** –
我使用这个 '$(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});' –
这是从远程或本地数据源?你能显示你的自动完成代码吗? –
它来自我从我的sql表中准备的本地数据源。实际上,当用户输入某些内容时,我不想每次启动“喜欢”查询。 –