15

これは次の質問に基づいています: Trying to get tag-it to work with an AJAX call

ただし、上記は「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"}
4

6 に答える 6

19

このコードをチェックしてください

$("#mytags").tagit({
    autocomplete: {
        source: function( request, response ) {
            /*call api*/
        }
    }
});
于 2012-12-13T05:42:34.297 に答える
4

Ajax / XHR レスポンスなどのカスタム オートコンプリート ソースを使用する場合は、autocomplete.source をオーバーライドする必要があります。

例えば:

$("#myTags").tagit({
    autocomplete: {
       delay: 0,
       minLength: 2,
       source : 'your data response'
    }
});
于 2013-03-09T16:52:39.440 に答える
3

おそらく、成功ハンドラーには次のようなものを使用する必要があります。

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

ID プロパティと Name プロパティを持つカテゴリ オブジェクトを表示しています。

于 2012-12-07T16:00:31.310 に答える
3

jquery UI から autocomplete メソッドを上書きできると思います:

<!-- 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()
    }
});
于 2013-03-09T16:47:12.047 に答える
2

このエラーは、tag it の古いバージョンを使用したことが原因でした。同じエラーが発生する場合は、tagit の最新バージョンを使用していることを確認してください。

于 2012-06-19T13:08:03.660 に答える