问题描述:用js获取后台数据,bootstrap-select 显示不出数据(实际上普通的select是用的)。
原因:缺少:$('.selectpicker').selectpicker('val', ''); $('.selectpicker').selectpicker('refresh'); 获取后需要重新刷新。
代码块:
var req;
function Change_Select() {// 当第一个下拉框的选项发生改变时调用该函数
var linkman = document.getElementById("linkman").value;
var url = "SystemManage/user/company.jsp?linkman=" + encodeURIComponent(linkman);
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req) {
req.open("POST", url, true);
// 指定回调函数为callback
req.onreadystatechange = callback;
req.send(null);
}
}
// 回调函数
function callback() {
if (req.readyState == 4) {
if (req.status == 200) {
parseMessage();// 解析XML文档
} else {
alert("不能得到描述信息:" + req.statusText + " " + req.status);
}
}
}
// 解析返回xml的方法
function parseMessage() {
var xmlDoc = req.responseXML.documentElement;//获得返回的XML文档
var xSel = xmlDoc.getElementsByTagName('select');
var select_root = document.getElementById('company'); // 获得网页中的第二个下拉框
select_root.options.length = 0; // 每次获得新的数据的时候先把每二个下拉框架的长度清0
if(selectingw==1){
select_root.add(new Option(companystr,companystr));
}else{
for ( var i = 0; i < xSel.length; i++) {
var xValue = xSel[i].childNodes[0].firstChild.nodeValue;
//获得每个<select>标记中的第一个标记的值,也就是<value>标记的值
var xText = xSel[i].childNodes[1].firstChild.nodeValue;
//获得每个<select>标记中的第二个标记的值,也就是<text>标记的值
var option = new Option(xText, xValue);
// 根据每组value和text标记的值创建一个option对象
try {
select_root.add(option);// 将option对象添加到第二个下拉框中
} catch (e) {
}
}
}
selectingw=0;
$('.selectpicker').selectpicker('val', '');
$('.selectpicker').selectpicker('refresh');
}
不加这个时,联系人选择完后,客户公司是空的
在js遍历完后台要显示的数据后,加上
$(
'.selectpicker'
).selectpicker(
'val'
,
''
);
$(
'.selectpicker'
).selectpicker(
'refresh'
);
这两行代码。问题解决,客户select选择框正常显示。