Вложенный запрос $ .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 таким образом. Есть ли лучшая идея для выполнения этого запроса в лучшем виде?

javascript,jquery,asynchronous,get,

0

Ответов: 0

Вложенный запрос $ .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, асинхронный, получить,
Похожие вопросы