首页 > 解决方案 > 在循环中调用 ajax,它不会执行 2 次

问题描述

我正在处理一个 MVC 项目,在一个视图中我需要一个脚本来进行 Ajax 调用以进行计算,我有 N(最多 5 个)对象要填充,每次我运行脚本时,都会有一个循环重复 N 次对象很多,但是,在 Ajax 调用时,循环重新开始,变量在所有代码执行之前递增,

我会向您展示代码,如果没有正确执行,请见谅:

function TestFunction(c) {

     for (var k = 0; k < @TempData["num_bal_simu"]; k++) {
            


         var newvalue = c.getElementsByClassName("valuesheet")[0].value;
         var testAttribute = c.getElementsByClassName("valuesheet")[0];
         var getNameAttributeReplace = testAttribute.getAttribute('name').split(".");
         
         var array = testAttribute.id.split("_");
         indexbalancesheetFor = array[4];
    var indiceBalanceSheet = parseInt(getNameAttributeReplace[0][getNameAttributeReplace[0].length - 2]);
    stringa = "SimulatedBalance" + "Input" + "_" + "0";

    if (indiceBalanceSheet == 0 && k == 0) {
        var valueDropDownMode = document.getElementById(testAttribute.getAttribute('name')).value;
    }
    else {

        var newstr = getNameAttributeReplace[0].replace(indiceBalanceSheet,'0');
        var getAttributeNameModify = newstr + "." + getNameAttributeReplace[1] + "." + getNameAttributeReplace[2] + "." + getNameAttributeReplace[3];
        var valueDropDownMode = document.getElementById(getAttributeNameModify).value;

    }



         if (indiceBalanceSheet == 0 && k == 0) {
        var testAttribute2 = c.getElementsByClassName("valuesheet")[0].name;
        var last_value = document.getElementById(testAttribute2).value;

    }
    else {
        var newstr = getNameAttributeReplace[0].replace(indiceBalanceSheet, '0');
        var testAttribute2 = newstr + "." + getNameAttributeReplace[1] + "." + getNameAttributeReplace[2] + "." + getNameAttributeReplace[3];
        var counter = k - 1;
        previousBalanceValue = document.getElementById("SimulatedBalance" + "_" + counter + "__" + "BalanceSheetIncome" + "_" + indexbalancesheetFor + "__Value_Hidden").value;
        var last_value = previousBalanceValue;
    }
    if (antevalue != newvalue) {
        var valuepunto = parseFloat(last_value.replace(",", "."));

        switch (valueDropDownMode) {
            case '0':
                var val0 = (valuepunto * newvalue) / 100;
                last_value = valuepunto + val0;
                last_value.toString().replace('.', ',');

                break;
            case '1':
                newvalue = newvalue.replace(",", ".");
                last_value = parseFloat(valuepunto) + parseFloat(newvalue);
                last_value = last_value.toString().replace('.', ',');

                break;
            case '2': last_value = newvalue;
            default:
                break;
        }
                 c.getElementsByClassName("hiddenvalueprospect")[0].value = last_value;
                 var myRows = [];
                 var headersText = [];
                 var $headers = $("th");
                 var GeneralSheet = [];
                 var contenent = document.getElementById(document.getElementById("TabSelect").value);
                 var tableload = contenent.getElementsByClassName("table-balance")[0];
                 var schema = tableload.getElementsByClassName("VersionClass")[0].value;
                 var prospetto = tableload.getElementsByClassName("ProspectClass")[0].value;
                 var tBody = tableload.getElementsByTagName('tbody')[0];
                 var tableRow = tBody.getElementsByTagName('tr');





                 var $rows = $(tableRow).each(function (index) {

                     var test1 = new Object();
                     

                     $cells = $(this).find("td");
                     myRows[index] = {};
                     $cells.each(function (cellIndex) {



                         // Set the header text
                         if (headersText[cellIndex] === undefined) {
                             headersText[cellIndex] = $($headers[cellIndex]).text();
                         }

                         if (cellIndex == 1) {
                             myRows[index][headersText[cellIndex]] = $(this).text();
                             test1["descrizione"] = $(this).text();

                         }
                         if (cellIndex == 0) {
                             test1["codice"] = $(this).find('input').val();
                         }
                               // Update the row object with the header/cell combo
                         if (k == 0) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_0") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();
                             }
                         }
                         if (k == 1) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_1") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();

                                 
                             }
                         }
                         if (k == 2) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_2") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();
                             }
                         }
                         if (k == 3) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_3") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();
                             }
                         }
                         if (k == 4) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_4") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();
                             }
                         }
                         if (k == 5) {
                             if ($cells[cellIndex].id == "SimulatedBalanceInput_5") {
                                 myRows[index][headersText[cellIndex]] = $(this).find('input:hidden').val();
                                 test1["importo"] = $(this).find('input:hidden').val();
                             }
                         }
                     });
                     GeneralSheet.push(test1);

                 });

                 // Let's put this in the object like you want and convert to JSON (Note: jQuery will also do this for you on the Ajax request)
                 var GeneralBalance = {
                     "schema": schema,
                     "prospetto": prospetto,
                     "row": GeneralSheet
                 };

                 var balance = JSON.stringify(GeneralBalance);
                

                 if (balance != null) {
                     $.ajax({
                         url: "/api/APIBalance/PostBalance",
                         dataType: "json",
                         async: false,
                         type: "POST",
                         data: { "": balance },
                         success: function (a) {
                             var obj = JSON.parse(a);
                             var myRows2 = [];
                             var headersText2 = [];
                             var $headers2 = $("th");
                             var i = 0;
                             var contenent = document.getElementById(document.getElementById("TabSelect").value);
                             var tableload = contenent.getElementsByClassName("table-balance")[0];
                             var tBody = tableload.getElementsByTagName('tbody')[0];
                             var tableRow = tBody.getElementsByTagName('tr');
                             // Loop through grabbing everything
                             var $rows2 = $(tableRow).each(function (index2) {

                                 $cells2 = $(this).find("td");
                                 myRows2[index2] = {};
                                 $cells2.each(function (cellIndex2) {

                                     // Set the header text
                                     if (headersText2[cellIndex2] === undefined) {
                                         headersText2[cellIndex2] = $($headers2[cellIndex2]).text();
                                     }

                                     // Update the row object with the header/cell combo
                                     if (k == 0) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_0") {
                                             $(this).find('input').val(obj[i].importo);
                                         }
                                     }

                                     if (k == 1) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_1") {
                                             $(this).find('input').val(obj[i].importo);

                                         }
                                     }
                                     if (k == 2) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_2") {
                                             $(this).find('input').val(obj[i].importo);

                                         }
                                     }
                                     if (k == 3 ) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_3") {
                                             $(this).find('input').val(obj[i].importo);
                                         }
                                     }
                                     if (k == 4) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_4") {
                                             $(this).find('input').val(obj[i].importo);

                                         }
                                     }
                                     if (k == 5) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_5") {
                                             $(this).find('input').val(obj[i].importo);

                                         }
                                     }



                                     if (k == 0) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_0") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }

                                     if (k == 1 ) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_1") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }
                                     if ( k == 2) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_2") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }
                                     if ( k == 3) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_3") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }
                                     if ( k == 4) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_4") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }
                                     if ( k == 5) {
                                         if ($cells2[cellIndex2].id == "valueSimulated_5") {
                                             $(this).find(':hidden').val(obj[i].importo);
                                         }
                                     }

                                 });
                                 i++;

                             });


                             
                         }
                     })
                 }
             }

for循环包含了整个脚本,我在互联网上读到只是通过输入使调用非异步async: false但这没有用,我已经卡在这里好几天了,请我需要帮助

标签: javascriptajaxasp.net-mvcasp.net-ajax

解决方案


推荐阅读