JSON解析带有jquery令牌输入的字符串时出现问题



我在一个项目中使用jquery令牌输入。以下是我启动标记的方式。

$(document).ready(function(){
var defaultOptions = {  searchDelay: 500,
minChars: 3,
};
$('.tokeninput').each(function () {
var field = $(this),
dataOptions = field.data('tokenoptions');
if(dataOptions){
defaultOptions = $.extend(defaultOptions, dataOptions);
}                   
console.log(defaultOptions);
field.tokenInput("url_to_live_search', defaultOptions);
});
});  

然后,我使用";数据";我的输入字段中的属性

<input value="105" name="institution_id" required="required" class="tokeninput" data-tokenoptions="<?php echo json_encode(['tokenLimit'=>1,'allowFreeTagging'=>true]);?> type="text">

到目前为止运行良好。但是,当我试图通过数据选项传递prePopulate参数时,如下所示,我得到了一个错误。

<input value="105" name="institution_id" required="required" class="tokeninput" data-tokenoptions="<?php echo json_encode([tokenLimit] => 1, [allowFreeTagging] => 1, [prePopulate] => {"id":105,"name":"Institution Title"});?> type="text">

错误未捕获类型错误:无法使用"in"运算符在{"id":105,"name":"Institution Title"}中搜索"length">

我对这个问题进行了搜索,发现问题是因为没有解析JSON。我尝试对启动器进行一些修改。但它不起作用。任何帮助都将不胜感激。

我对启动器及其工作进行了以下更改。但我不确定这样做是否正确。你能做向导吗。

$(document).ready(function(){
var defaultOptions = {  searchDelay: 500,
minChars: 3
};
$('.tokeninput').each(function () {
var field = $(this),
dataOptions = field.data('tokenoptions');
if(dataOptions){
var populateValue = dataOptions.prePopulate;
if(populateValue){
dataOptions = jQuery.grep(dataOptions, function(a) {
return a !== 'prePopulate';
});
populateValue = $.parseJSON(populateValue);
dataOptions = $.extend(defaultOptions, {prePopulate:[populateValue]});                                              
}
defaultOptions = $.extend(defaultOptions, dataOptions);
}                   
console.log(defaultOptions);
field.tokenInput("url_to_live_search", defaultOptions);
});
});  

最新更新