Ответ 1
Эта ошибка была вызвана тем, что я использовал старую версию тега. Если вы получите ту же ошибку, убедитесь, что используете новейшую версию tagit
Это вопрос, основанный на: Попытке получить tag-it для работы с вызовом AJAX
Однако приведенное выше просто создает сообщение об ошибке "this.source не является функцией" для меня.
Я пытаюсь, чтобы этот список json отображался как источник тегов для tagit через ajax. Код ниже:
// 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"}
Эта ошибка была вызвана тем, что я использовал старую версию тега. Если вы получите ту же ошибку, убедитесь, что используете новейшую версию tagit
Отъезд этот код может помочь вам
$("#mytags").tagit({
autocomplete: {
source: function( request, response ) {
/*call api*/
}
}
});
Источник autocomplete.source должен быть переопределен, если вы хотите использовать собственные источники автозаполнения, такие как ответ Ajax/XHR.
Например:
$("#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:
<!-- language: lang-js -->
$('.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()
}
});