2

http://ivaynberg.github.io/select2で ivaynberg が提供する select2 で xml を使用しようとしています。

次のコードを使用してxmlデータを取得しています

$('#selectbox').select2({
minimumInputLength: 1,
ajax: {
    url: 'test.xml',
  dataType: 'xml',
  data: function (term, page) {
    return {
      q: term
    };
  },
  results: function (data, page) {
      return { results: data.CATALOG };
  }
}});

以下はXMLデータです

<?xml version="1.0" encoding="ISO-8859-1"?>
<CATALOG>
<CD>
    <id>1</id>
    <text>Bob Dylan</text>
</CD>
<CD>
    <id>1</id>
    <text>Bonnie Tyler</text>
</CD>
</CATALOG>

何が間違っているのかわかりません.Select2はデータをロードしません.

誰か私たちを助けてください。

4

2 に答える 2

1

results各オブジェクトがプロパティを持つオブジェクトの配列を返す ajax オプションの関数を提供する必要がidありtextます。

以下は、機能する 1 つの方法です。返された XML を jQuery オブジェクトでラップし、jQuery メソッドを使用して XML を処理します。ネイティブ DOM メソッドを使用して XML を操作することもできます。

$('#selectbox').select2({
    minimumInputLength: 1,
    ajax: {
        url: 'test.xml',
        dataType: 'xml',
        data: function(term, page) { return { q: term }; },
        results: function(data) {
            return {
                results: $(data).children('CATALOG').children('CD').map(function() {
                    var $cd = $(this);
                    return {
                        id: $cd.children('id').text(),
                        text: $cd.children('text').text()
                    };
                })
            };
        }
    }
});

jsfiddle

注: ただし、各アイテムには一意のid値が必要です。あなたの例の XML では、2 つの<cd>要素の両方に値があります1

于 2014-12-19T19:47:13.580 に答える