С уважением Как вернуть ответ от асинхронного вызова? этот пост, ответ может быть процессом, прежде чем передать его на обратный вызов.
Для меня возможно получить значение, если я никогда не буду использовать цикл в своей программе, но моя программа здесь должна пройти через 3 API, чтобы получить всю информацию. Я должен сделать печать за пределами цикла, чтобы вернуть всю информацию в таблицу, иначе я получаю только строку информации в моем браузере
Вот код
$(function () {
$.get(urlVS + "/retrieve_current_user_email", function (result) {
var jsonObj = JSON.parse(result);
userEmail = jsonObj.email;
$.get(urlVS + "/retrieveFormList?email=" + userEmail, function (retrieveFormListResult) {
getResult = JSON.parse(retrieveFormListResult);
var k = 0;
var l = 0;
var unattemptedTableBody = "<p><table class='table table-striped table-bordered' style='width:100%; margin-top:26px;'>" +
"<thead><center style='margin-top: 16px;'><u><b>Un-attempted Votes</b></u></center>" +
"<tr><th>No</th><th>Title</th><th>Creator</th><th>Time Created</th><th>Action</th></tr></thead><tbody>";
var attemptedTableBody = "<p><table id='attempt' class='table table-striped table-bordered' style='width:100%; margin-top:26px;'>" +
"<thead><center style='margin-top: 16px;'><u> <b>Attempted Votes</b></u></center>" +
"<tr><th>No</th><th>Title</th><th>Creator</th><th>Time Created</th><th>Action</th></tr></thead><tbody>";
for (var i = 0; i < getResult.message.length; i++) {
//check if user has attempted the question
formId = getResult.message[i].formid;
date = getResult.message[i].created_time;
title = getResult.message[i].title;
creator = getResult.message[i].creator;
$.get(urlVS + "/retrieveResult2?formid=" + formId + "&email=" + userEmail, function (retrieveResult) {
var objRetrieveResult = JSON.parse(retrieveResult);
getLastIndexDot = date.lastIndexOf(".");
date = date.substring(0, getLastIndexDot);
for (var j = 0; j < objRetrieveResult.surveyInfo.userUnFillList.length; j++) {
if (objRetrieveResult.surveyInfo.userUnFillList[j] != null) {
if (objRetrieveResult.surveyInfo.userUnFillList[j].email == userEmail) {
console.log(objRetrieveResult.surveyInfo.userUnFillList[j].email)
k += 1;
unattemptedTableBody += "<tr><td>" + k + "</td><td>" + title + "</td><td>" + creator + "</td><td>" + date + "</td>" +
"<td><a href='/votesystem/Go_to_Answers'><button type="button" class="btn btn-primary btn-block">Start Voting</button></a></td></tr>";
processGetRequestValue(unattemptedTableBody);
}
}
if (objRetrieveResult.surveyInfo.userFilledList[j] != null) {
if (objRetrieveResult.surveyInfo.userFilledList[j].email == userEmail) {
l += 1;
attemptedTableBody += "<tr><td>" + l + "</td><td>" + title + "</td><td>" + creator + "</td><td>" + date + "</td>" +
"<td><a href='/votesystem/Go_to_Answers'><button type="button" class="btn btn-primary btn-block">View Result</button></a></td></tr>";
}
}
}
});
}
unattemptedTableBody += "</tbody></table></p>";
attemptedTableBody += "</tbody></table></p>";
$("#attempt").html(attemptedTableBody);
$("#home").html(unattemptedTableBody);
Я не смог вернуть значение ответа на мой стол, пожалуйста, игнорируйте закрывающую скобку кода. Кстати, метод не подходит или эффективен, если я использую запрос get таким образом. Есть ли лучшая идея для выполнения этого запроса в лучшем виде?
javascript,jquery,asynchronous,get,
С уважением Как вернуть ответ от асинхронного вызова? этот пост, ответ может быть процессом, прежде чем передать его на обратный вызов.
Для меня возможно получить значение, если я никогда не буду использовать цикл в своей программе, но моя программа здесь должна пройти через 3 API, чтобы получить всю информацию. Я должен сделать печать за пределами цикла, чтобы вернуть всю информацию в таблицу, иначе я получаю только строку информации в моем браузере
Вот код
$(function () {
$.get(urlVS + "/retrieve_current_user_email", function (result) {
var jsonObj = JSON.parse(result);
userEmail = jsonObj.email;
$.get(urlVS + "/retrieveFormList?email=" + userEmail, function (retrieveFormListResult) {
getResult = JSON.parse(retrieveFormListResult);
var k = 0;
var l = 0;
var unattemptedTableBody = "<p><table class='table table-striped table-bordered' style='width:100%; margin-top:26px;'>" +
"<thead><center style='margin-top: 16px;'><u><b>Un-attempted Votes</b></u></center>" +
"<tr><th>No</th><th>Title</th><th>Creator</th><th>Time Created</th><th>Action</th></tr></thead><tbody>";
var attemptedTableBody = "<p><table id='attempt' class='table table-striped table-bordered' style='width:100%; margin-top:26px;'>" +
"<thead><center style='margin-top: 16px;'><u> <b>Attempted Votes</b></u></center>" +
"<tr><th>No</th><th>Title</th><th>Creator</th><th>Time Created</th><th>Action</th></tr></thead><tbody>";
for (var i = 0; i < getResult.message.length; i++) {
//check if user has attempted the question
formId = getResult.message[i].formid;
date = getResult.message[i].created_time;
title = getResult.message[i].title;
creator = getResult.message[i].creator;
$.get(urlVS + "/retrieveResult2?formid=" + formId + "&email=" + userEmail, function (retrieveResult) {
var objRetrieveResult = JSON.parse(retrieveResult);
getLastIndexDot = date.lastIndexOf(".");
date = date.substring(0, getLastIndexDot);
for (var j = 0; j < objRetrieveResult.surveyInfo.userUnFillList.length; j++) {
if (objRetrieveResult.surveyInfo.userUnFillList[j] != null) {
if (objRetrieveResult.surveyInfo.userUnFillList[j].email == userEmail) {
console.log(objRetrieveResult.surveyInfo.userUnFillList[j].email)
k += 1;
unattemptedTableBody += "<tr><td>" + k + "</td><td>" + title + "</td><td>" + creator + "</td><td>" + date + "</td>" +
"<td><a href='/votesystem/Go_to_Answers'><button type="button" class="btn btn-primary btn-block">Start Voting</button></a></td></tr>";
processGetRequestValue(unattemptedTableBody);
}
}
if (objRetrieveResult.surveyInfo.userFilledList[j] != null) {
if (objRetrieveResult.surveyInfo.userFilledList[j].email == userEmail) {
l += 1;
attemptedTableBody += "<tr><td>" + l + "</td><td>" + title + "</td><td>" + creator + "</td><td>" + date + "</td>" +
"<td><a href='/votesystem/Go_to_Answers'><button type="button" class="btn btn-primary btn-block">View Result</button></a></td></tr>";
}
}
}
});
}
unattemptedTableBody += "</tbody></table></p>";
attemptedTableBody += "</tbody></table></p>";
$("#attempt").html(attemptedTableBody);
$("#home").html(unattemptedTableBody);
Я не смог вернуть значение ответа на мой стол, пожалуйста, игнорируйте закрывающую скобку кода. Кстати, метод не подходит или эффективен, если я использую запрос get таким образом. Есть ли лучшая идея для выполнения этого запроса в лучшем виде?
00JavaScript, JQuery, асинхронный, получить,