13

Select2を使用してAJAX経由でデータを取得する必要がある次のコードがあります

$('#Organisation').select2({
    ajax: {
        url: AppURL + 'Organisations/Manage/SearchByName/',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) {
            return {
                term: term
            };
        },
        results: function (data) {
            return {
                results: data
            };
        }
    }
});

「O」を検索するときに Web Inspector を使用してリクエストを見ると、次のようになります。

[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

私が間違っていることはありますか?結果関数で何かが間違っていると思います。

私が得るエラーは次のとおりです。Uncaught TypeError: Cannot call method 'toUpperCase' of undefined

4

2 に答える 2

35

試す

$('#Organisation').select2({
    ajax: {
        url: 'data.json',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) {
            return {
                term: term
            };
        },
        results: function (data) {
          var results = [];
          $.each(data, function(index, item){
            results.push({
              id: item.ID,
              text: item.label
            });
          });
          return {
              results: results
          };
        }
    }
});

デモ:プランカー

于 2013-04-19T10:24:22.000 に答える
5

上記のソリューション以外に、次のjsonを返す代わりに、1つのことを行うことができます

[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

これを返す

[{"text":"Organisation 1","id":2},{"text":"Organisation 2","id":1}]

同じ問題に直面し、他の人によって提案されたいくつかの解決策を見て、これを理解しました.

于 2014-10-01T20:59:36.903 に答える