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