【问题标题】:Add two number variables from two different ajax results从两个不同的 ajax 结果中添加两个数字变量
【发布时间】:2020-06-21 17:48:45
【问题描述】:

我想将两个数字相加并计算两个不同 ajax 调用的总数,以便我可以将总值附加到 dom

 $.ajax({
            url: "@Url.Action("MonthlyReport")",
            data: { id: id },
              success: function (data) {
                  var total = 0;
                  for (var i = 0; i < data.length; i++) {


             // Create our number formatter.
                total += data[i].interestAmountPerMonth 

               }

                  var formatter = new Intl.NumberFormat('en-US', {
                      style: 'currency',
                      currency: 'USD',
                  });

                  const totalAmountAccrued = formatter.format(total)
                  $('#totalAmountAccrued').append(totalAmountAccrued)

            },
            error: function (req, status, error) {}
          });

下面是第二个ajax

     $.ajax({
            url: "@Url.Action("GetAllLoan")",
            data: { id: id },
            success: function (result) {

                var formatter = new Intl.NumberFormat('en-US', {
                    style: 'currency',
                    currency: 'USD',
                });

                const originalLoanAmount = formatter.format(result.originalLoanAmount);
                const amountWrittenOff = formatter.format(result.amountWrittenOff);
                

            },
            error: function (req, status, error) {
            }
        });

我想实现这样的目标让overallTotal = totalAmountAccrued + amountWrittenOff

【问题讨论】:

  • 似乎是什么问题?您可以添加两个值。

标签: javascript jquery ajax ecmascript-5


【解决方案1】:

您可以使用 $.when 组合多个请求 https://api.jquery.com/jquery.when/

【讨论】:

    【解决方案2】:

    在 ajax 调用上方使用 let 声明 totalAmountAccrued 和 amountWrittenOff。

    like let totalAmountAccrued;

    const totalAmountAccruedconst amountWrittenOff 中删除 const。

    【讨论】:

      【解决方案3】:

      使用Promise.all,当所有承诺都解决时触发then

      function makeFetch(url, data) {
          return $.ajax({url: url, data: data})
      }
      
      Promise.all([
          makeFetch('@Url.Action("MonthlyReport")', {id: id}),
          makeFetch('@Url.Action("GetAllLoan")', {id: id})
      ])
      .then(([monthlyReport, allLoan]) => {
          const totalAmountAccrued = monthlyReport.reduce((sum, data) => sum + data.interestAmountPerMonth, 0)
          const amountWrittenOff = allLoan.amountWrittenOff
          const overallTotal = totalAmountAccrued + amountWrittenOff
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        • 2022-12-07
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多