我正在编写一个基本上将数据库作为表加载的脚本。这只是它的准系统版本,但应该涵盖我正在尝试的所有内容。
HTML:
<a href="#" onclick="kiloseqResult=dbload('sample_kiloseq')">Load database</a>
<div id="result_table" style="visibility:hidden;">
<center>
<table border="0" cellspacing="3" cellpadding="3" id="summaryTable" class="table table-striped tablesorter">
<thead>
<tr style="font-weight: bold; text-align: center;">
<th>Well ID</th>
<th>Dominant Gene</th>
<th>%</th>
<th>Secondary Gene</th>
<th>%</th>
<th>No. of Reads that Mapped</th>
<th>No. of Mutations</th>
<th>Mutation Information</th>
<th>View</th>
</tr>
</thead>
<tbody id="summaryBody">
</tbody>
</table>
</div>
使用Javascript:
var kiloseqResult
function dbload(name){
var r = new XMLHttpRequest();
r.open("GET", "/db/"+name, true);
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
kiloseqResult = r.responseText;
console.log(kiloseqResult)
return kiloseqResult
structureTable();
};
r.send()
}
function structureTable(){
if (kiloseqResult==null){
throw "Error: no databse defined"
};
document.getElementById("summaryTable").style.visibility="visible";
kiloseqDatabase = JSON.parse(kiloseqResult);
var table = document.getElementById("summaryBody");
for (i=0;i<kiloseqDatabase.length;i++){
var row = table.insertRow(i);
var cell = row.insertCell(0);
cell.innerHTML = "Some HTML here"
};
}
AJAX请求有效,我已经确认了这一点,因此var kiloseqResult中有一个结果加载(我已经在多个位置声明了变量以确保它被加载)。但是dbload()完成后没有调用structureTable(),我似乎无法弄清楚原因。
非常感谢任何帮助。
答案 0 :(得分:2)
点击return
语句后,javascript将停止处理您余下的功能,因此return
之后的所有行都将被忽略。所以,切换这些的顺序,所以:
structureTable();
return kiloseqResult