итерация вложенных циклов в Jquery asp.net - PullRequest
1 голос
/ 02 сентября 2011

Я работаю над страницей, на которой у меня есть 2 вложенных цикла, моя проблема в том ... Скажем для примера, текущее значение для внешнего цикла равно 1 и должно выполняться 1 раз. и внутренний цикл должен выполняться 2 раза. теперь, когда я оповещаю о значении внешнего цикла во внутреннем цикле, он выдает мне 2 с первой попытки. и когда я пытаюсь напечатать значение внутреннего цикла, он возвращает 1 в первый раз и 0 во второй раз ... это сумасшедшее поведение ... я полностью застрял здесь ... ниже мой код.

for (i = 1; i <= _leftSectionCount; i++) //_leftSectionCount is 1{
                    $("#tdSection" + i + "Image").html("<img width='500' height='35' src='/newsletterimage/section" + i + ".gif'>");
                    var rows = $("#divLeft" + i + "tbody1 td:nth-child(1)"); // has 2 rows
                    if (rows.length > 0) {
                        $("#tdSection" + i + "Data").append("<table id='tblSection" + i + "Data'></table>");
                        $("#tblSection" + i + "Data").html("");
                    }
                    rows.each(function (index) {
                        $.ajax({
                            type: "POST",
                            url: "AjaxMethods.aspx/GetArticleDetails",
                            data: "{'articleId':'" + $(this).text() + "'}",
                            dataType: "json",
                            contentType: "application/json",
                            success: function (data) {
                                var results = data.d;
                                alert("$(#tblSection" + i + "Data')"); // this returns me 2.
                                 alert("$(#tblSection" + index + "Data')"); // this returns me 1 and 0.
                                $("#tblSection" + i + "Data").append("<tr><td>" + results[0].Title + "</td></tr>");
                            },
                            error: function (data) { alert(data.responseText); }
                        });
                    })

                    WriteToFile();
                }

Кто-нибудь, пожалуйста, помогите мне, я застрял здесь.

1 Ответ

1 голос
/ 02 сентября 2011

Ваши ответы возвращаются асинхронными, поэтому i будет таким, какой он есть, когда он вернется, изменится на async=false, чтобы синхронизировать i и index (без каламбура):

rows.each(function (index) {
    $.ajax({
    type: "POST",
    url: "AjaxMethods.aspx/GetArticleDetails",
    data: "{'articleId':'" + $(this).text() + "'}",
    dataType: "json",
    async: false, //HERE
    contentType: "application/json",
    success: function (data) {
        var results = data.d;
        alert("$(#tblSection" + i + "Data')"); // this returns me 2.
         alert("$(#tblSection" + index + "Data')"); // this returns me 1 and 0.
        $("#tblSection" + i + "Data").append("<tr><td>" + results[0].Title + "</td></tr>");
    },
    error: function (data) { alert(data.responseText); }
    });
})
...