我使用融合图表,所以在融合图表链接事件我有以下代码
if (eventObject.eventType == "linkeditemopened") {
var url = "/" + $("#appName").val() + "/reports/getUserFilter?isSelectedLegends=true&isSelected=false&isDuplicateReq=true"
$('#legendListIdDiv').load(url);
loadMultiselectDropdown()
}
和下面的loadMultiselectDropdown()方法
function loadMultiselectDropdown(){
alert('called load mil')
var filterList1= $("#updatedlegendListId").val();
var filterList= $("#legendListId").val();
alert('type-- '+typeof filterList)
console.log('filterList1-- '+filterList)
alert('type-- '+typeof filterList1)
console.log('filterList1-- '+filterList1)
var filterList= $("#legendListId").val();
if(!filterList1 == ''){
$("#impact-report-user-filter-dropdown-div").show();
$("#impact-report-user-filter-dropdown").multiselect({
noneSelectedText: 'Select Legends',
selectedText: '# Legends Selected'
});
for(f in filterList1){
$('#impact-report-user-filter-dropdown').append($('<option>', {
value: filterList[f],
text: filterList[f]
}));
}
$("#impact-report-user-filter-dropdown").multiselect("refresh");
}
}
但是在console.log('filterList1-- '+filterList1)
行,我得到了undefined而不是一些值作为字符串。
这是dom
`<div id="legendListIdDiv">
<input type="hidden" name="updatedlegendList" id="updatedlegendListId" value="Hyderabad Factory,Delhi Registered Office,Mumbai Warehouse,Bangalore Development Centre,">
</div>`
为什么?我猜是因为在执行var filterList1= $("#updatedlegendListId").val();
行
如何克服?
答案 0 :(得分:2)
调用loadMultiselectDropdown()
作为load()
的回调:
if (eventObject.eventType == "linkeditemopened") {
var url = "/" + $("#appName").val() + "/reports/getUserFilter?isSelectedLegends=true&isSelected=false&isDuplicateReq=true"
$('#legendListIdDiv').load(url,loadMultiselectDropdown);
}
Ajax请求是异步的,因此您必须等待它结束才能使用结果。在您的代码中,您在拨打电话后立即致电loadMultiselectDropdown()
,这意味着在您拨打loadMultiselectDropdown()
时请求结果尚未就绪。