Jquery 使用XML选择2

Jquery 使用XML选择2,jquery,xml,jquery-select2,Jquery,Xml,Jquery Select2,我们正在尝试将xml与ivaynberg在提供的select2一起使用 我们使用以下代码获取xml数据 $('#selectbox').select2({ minimumInputLength: 1, ajax: { url: 'test.xml', dataType: 'xml', data: function (term, page) { return { q: term }; }, results: function (data, pag

我们正在尝试将xml与ivaynberg在提供的select2一起使用

我们使用以下代码获取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>

1.
鲍勃·迪伦
1.
邦尼泰勒
我不知道是什么错误,Select2没有加载任何数据


有人请帮助我们。

有一些事情应该做:

首先,selectbox控件应该是一个div

第二,当您使用ajax选项时,应该实现formatResult选项和formatSelection选项

以下是我的代码:

  $(document).ready(function () {
          $('#userbox').select2({
              minimumInputLength: 1,
              ajax: {
                  url: 'test.xml',
                  dataType: 'xml',
                  data: function (term, page) {
                      return {
                          q: term
                      };
                  },
                  results: function (data, page) {
                      return { results:$(data).find("text") };
                  }
              },
              formatResult: movieFormatResult,
              formatSelection: movieFormatSelection
          });
      });

      function movieFormatResult(item,container,query) {

          if ($(item).text().indexOf(query.term) > -1) {
              return item;
          } 

      }


      function movieFormatSelection(item) {
          return $(item).text();
      }



 <form id="form1" runat="server">
<div>
 <div id="userbox" style="width:300px"></div>
</div>
</form>
$(文档).ready(函数(){
$(“#用户框”)。选择2({
最小输入长度:1,
阿贾克斯:{
url:'test.xml',
数据类型:“xml”,
数据:功能(术语,第页){
返回{
问:任期
};
},
结果:功能(数据、页面){
返回{results:$(data.find(“text”)};
}
},
formatResult:movieFormatResult,
格式选择:电影格式选择
});
});
函数movieFormatResult(项、容器、查询){
if($(item.text().indexOf(query.term)>-1){
退货项目;
} 
}
功能电影格式选择(项目){
返回$(item).text();
}

您需要为ajax选项提供一个
results
函数,该函数返回一个对象数组,其中每个对象都有
id
text
属性

以下是一种有效的方法。它使用jQuery对象包装返回的XML,然后使用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()
                    };
                })
            };
        }
    }
});


注意:您希望每个项目都有一个唯一的
id
值。在示例XML中,两个
元素都具有值
1

使用
.ready()
函数包装整个代码。它已经包装了.ready()函数,但不起作用。