While calling nested Ajax, which innermost ajax doesn't work. As seen in the following example, I 'm calling getInnerResp into getResult.
Normally, when I debug with firebug is works interestingly. I think it behaves as async false but I setted async property as false didn't work again. Furthermore, I tried to get result set using callback function in getInnerResp function. Unfortunately I didn't succeed in any way. Also ftbl variable in getResult function returns null. getInnerResp only returns followed result;
Result
<tr><td colspan='3'></td></tr><tr><td colspan='3'></td></tr><tr><td colspan='3'></td></tr><tr><td colspan='3'></td></tr>
Javascript
function getResult(year){
var visible = true;
var table = $(".tbl"), tbody = $(".result").find("tbody"), ftbl = "";
table.find("tbody>tr").each(function(){
var data = {
course : $(this).find(".course").val(),
year : year,
prog : $(this).find(".program").val()
}
if(year.length < 1){
alert("Year field can not be empty!!");
visible = false;
return false;
}
$.ajax({
url : "result.php",
method : "GET",
data : data,
contentType: "application/json; charset=utf-8",
traditional : true,
success : function(d){
tbody.append("<tr><td>" + course + "</td><td>" + d.enrolledStudent + "</td><td>" + d.failedStudent + "</td>");
if(visible){
ftbl += getInnerResp(course, year);
console.log("inner" + ftbl);
}
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert("Javascript runtime error: " + textStatus);
}
});
});
if(visible){
tbody.append(ftbl);
}
}
function getInnerResp(course, year){
var tbl = "";
var data = {
course : course,
year : year
}
for(var i = 0; i < 5; i++){
tbl += "<tr><td colspan='3'></td></tr>";
}
$.ajax({
url : "course.php",
method : "GET",
data : data,
contentType: "application/json; charset=utf-8",
success : function(json){
$.each(json, function(i, val){
tbl += "<tr><td>" + course + "</td><td colspan='2'>" + val + "</td></tr>";
});
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
}
});
return tbl;
}