jQuery TagIt(autocomplete)通过AJAX获取JSON列表

这是一个基于以下问题的问题: 尝试使用标记 – 它与AJAX调用一起工作

但是,上面只是为我创建了“this.source不是函数”的错误消息。

我试图让这个json列表通过ajax显示为tagit的标记源。 代码如下:

// Tagit $("#tags").tagit({ tagSource: function() { $.ajax({ url: "/admin/ajax.php?q=fetch_all_tags", dataType: "json", success: function(data) { console.log(data); return data; } }); } }); 

ajax调用返回:

 {"4":"php","2":"html","3":"css"} 

看看这段代码可能对你有帮助

 $("#mytags").tagit({ autocomplete: { source: function( request, response ) { /*call api*/ } } }); 

如果要使用自定义自动完成源(如Ajax / XHR响应),则应覆盖autocomplete.source。

例如:

 $("#myTags").tagit({ autocomplete: { delay: 0, minLength: 2, source : 'your data response' } }); 

你可能应该使用类似的东西来成功处理:

 success: function (categoriesList) { response($.map(categoriesList, function (category) { return { label: category.Name + " (ID: " + category.ID + ")", value: category.Name }; })); } 

我正在显示具有ID和Name属性的类别对象。

我认为您可以从jquery UI覆盖自动完成方法:

  $('.tags ul').tagit({ itemName: 'question', fieldName: 'tags', removeConfirmation: true, //availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"] allowSpaces: true, // tagSource: ['foo', 'bar'] tagSource: function () { $.ajax({ url: "/autocomplete_tags.json", dataType: "json", data: { term: 'ruby' }, success: function (data) { console.log(data); return data; } }); }, autocomplete: { delay: 0, minLength: 2, source: this.tagSource() } }); 

这个错误是由我使用旧版本的标签引起的。 如果您得到相同的错误,请确保您使用的是最新版本的tagit