在其他函数(JS)结束时运行函数

时间:2017-12-13 09:16:00

标签: javascript jquery

我有从db

获取计算ID的函数

这是代码:

function getClaculationId() {

    var appointmentid = parseInt($('#appointmentId').text());
    var model = {
        appointmentId:appointmentid
    }
    $.ajax({
        url: '@Url.Action("GetCalculationId","Calculations")',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(model),
        type: 'POST',
        dataType: 'json',
        processData: false,
        success: function(data) {
            var list = data;
           $("#calculationId").text(list[0].calcId);
        }
    });

}

在此之后,我需要获取此ID并在另一个函数中使用

以下是此功能的代码

function getConsumables() {
   var calculationId = $('#calculationId').text();
   var model = {
       calcId: parseInt(calculationId)
   };
   $.ajax({
       url: '@Url.Action("GetConsumables", "Calculations")',
       contentType: 'application/json; charset=utf-8',
       data: JSON.stringify(model),
       type: 'POST',
       dataType: 'json',
       processData: false,
       success: function(data) {
           var list = data;
           for (var i = 0; i <= list.length - 1; i++) {
               var calculationTable = '<td class="point">' +
                   (i + 1) +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].consumableName +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].quantity +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].description +
                   '</td>' +
                   '<td class="title"> ' +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].summ +
                   '</td>';
               $('#consumables').append(calculationTable);
           };
       }
   });

}

我将这些功能称为

$('#calculate').click(function() {
    $('#main-info').load('@Url.Action("Calculations","PatientDatabase")',function() {
        getClaculationId();
        getConsumables();
    });
});

但问题是,当getConsumables()运行时,calculationId为空。

如何正确编写代码以将calculateId传递给第二个函数?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我认为处理这种情况Promise方法比任何方法更好。但是现在你可以尝试以下方法:

function getClaculationId() {

    var appointmentid = parseInt($('#appointmentId').text());
    var model = {
        appointmentId:appointmentid
    }
    $.ajax({
        url: '@Url.Action("GetCalculationId","Calculations")',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(model),
        type: 'POST',
        dataType: 'json',
        processData: false,
        success: function(data) {
            var list = data;
           //$("#calculationId").text(list[0].calcId);
           getConsumables(list[0].calcId); // Called here with success value
        }
    });

}

function getConsumables(value) {
   //var calculationId = $('#calculationId').text();
   var model = {
       calcId: parseInt(value)
   };
   $.ajax({
       url: '@Url.Action("GetConsumables", "Calculations")',
       contentType: 'application/json; charset=utf-8',
       data: JSON.stringify(model),
       type: 'POST',
       dataType: 'json',
       processData: false,
       success: function(data) {
           var list = data;
           for (var i = 0; i <= list.length - 1; i++) {
               var calculationTable = '<td class="point">' +
                   (i + 1) +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].consumableName +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].quantity +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].description +
                   '</td>' +
                   '<td class="title"> ' +
                   '</td>' +
                   '<td class="title"> ' +
                   list[i].summ +
                   '</td>';
               $('#consumables').append(calculationTable);
           };
       }
   });
}

答案 1 :(得分:0)

我看到有关向成功函数添加代码的好评,其他方式是将侦听器添加到字段$("#fieldId").on("change", yourFunctionName)

请注意yourFunctionName未经通话()

撰写

此字段可以隐藏或其他内容。这里的问题是,当你打电话给你的功能响应还没有收到时,听众的方式或将其添加到成功功能解决这个问题