一个问题,关于变量作用域。
【现在明白了,其实是一个很简单的问题。Ajax的处理是异步的,如果要对success函数进行输出,就得在里面执行。】
//载入当前课程、当前作业的全部学生列表
function getStudentsAssignmentsList(courseID){
courseID = courseID || currentCourseID;
var self = this;
var assignmentID = $(self).attr("name");
currentAssignmentID = assignmentID;
$.get('course/members.php',{
id:courseID
},
function(data){
if (data.error_code!=0) {
alert('获取学生提交作业列表出现错误:'+ data.message);
return null;
}
else{
var StuList = '<table><tbody><tr><th>学生ID</th><th>学生姓名</th><tr>';
data['students'].forEach(function(ele){
$.get('assignment/details.php',{
assignment_id:currentAssignmentID,
uid:ele.id
},function(detail){
if (detail['error_code']==0 && detail['status']==2) {
StuList += '<tr><td>'+ele["id"]+'</td><td>'+ele["name"]+'</td></tr>';
}
});
});
$('#tabPage_studentAssignmentsList').html(StuList+'</tbody></table>');
}
});
$('#tabPage_studentAssignmentsList').show();
}
最后写入到 id=tabPage_studentAssignmentsList的div里的html内容却并不包含 StuList += '<tr><td>'+ele["id"]+'</td><td>'+ele["name"]+'</td></tr>'; 的执行结果(在能执行到的时候)。