我有从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传递给第二个函数?
感谢您的帮助。
答案 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
未经通话()
此字段可以隐藏或其他内容。这里的问题是,当你打电话给你的功能响应还没有收到时,听众的方式或将其添加到成功功能解决这个问题