Jquery 使用XML选择2
我们正在尝试将xml与ivaynberg在提供的select2一起使用 我们使用以下代码获取xml数据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
$('#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()函数,但不起作用。