gpt4 book ai didi

jquery - 使用源变量中的 JSON 值自动完成?

转载 作者:行者123 更新时间:2023-12-01 00:11:18 25 4
gpt4 key购买 nike

jQuerys .autocomplete() 函数的“源”选项有两个变体。

字符串数组:

[ "Choice1", "Choice2" ]

具有标签和值属性的对象数组:

 [ { label: "Choice1", value: "value1" }, ... ]

当直接传递给 .autocomplete() 函数时,它们都可以正常工作:

$('input').autocomplete({source: [ "Choice1", "Choice2" ], minLength: 0});

或者

$('input').autocomplete({source: [ { label: "Choice1", value: "value1" } ], minLength: 0});

但是当作为变量传递时我无法工作:

var source = '[ "Choice1", "Choice2" ]';
$('input').autocomplete({source: source, minLength: 0});

这与将变量隐式转换为字符串有关 - 自动完成将变量中的值视为与处理 AJAX 源(这是一个字符串)相同的方式。

最终我想使用输入元素的 data-json 属性中的 JSON 值。

为了增加兴趣:

$('input').autocomplete({source: $('input').data('json'), minLength: 0});

对于第一个变体完美工作,但对于第二个变体则恢复为字符串行为。

使用 $('input').attr('data-json') 不适用于这两种变体。

对这两种变体都有效的“黑客”方法是这样做:

$('input').autocomplete({source: eval($('input').attr('data-json')), minLength: 0});

我是否错过了一些允许 .data() 在第二个变体中将明显有效的 JSON 作为对象返回的内容?

还有其他方法吗?还是我只需要与 eval() 和解,尽管大家都认为这可能不是一件好事?

谢谢你的想法..

最佳答案

var source = '[ "Choice1", "Choice2" ]';

这是一个字符串,而不是一个数组。

尝试不加引号:

var source = [ "Choice1", "Choice2" ];

如果您发现自己处于必须从 JSON 字符串获取数据的情况,请不要使用 eval(这是邪恶的),而使用 JSON.parse(所有现代浏览器都有)

var source = JSON.parse( '[ "Choice1", "Choice2" ]' ); 

或者,因为您已经在使用 jQuery

var source = $.parseJSON( '[ "Choice1", "Choice2" ]' ); 

关于jquery - 使用源变量中的 JSON 值自动完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10225587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com