Javascript 在其他函数(JS)末尾运行函数
我有一个函数可以从数据库中获取计算id 以下是代码:Javascript 在其他函数(JS)末尾运行函数,javascript,jquery,Javascript,Jquery,我有一个函数可以从数据库中获取计算id 以下是代码: function getClaculationId() { var appointmentid = parseInt($('#appointmentId').text()); var model = { appointmentId:appointmentid } $.ajax({ url: '@Url.Action("GetCalculationId","Calculation
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);
};
}
});
但问题在于,当运行getconsudies()
时,calculationId
为空
如何正确编写代码以将calculationId传递给第二个函数
谢谢您的帮助。我看到了关于向成功函数中添加代码的好评论,换句话说就是将侦听器添加到字段
$(“#fieldId”)。在(“更改”,yourFunctionName)
请注意,yourFunctionName
是在没有调用的情况下编写的()
此字段可以隐藏或其他内容。这里的问题是,当您调用尚未收到响应的函数时,通过侦听器或将其添加到成功函数来解决此问题我认为处理这种类型的场景方法比任何方法都要好。但现在您可以尝试以下方法:
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);
};
}
});
}
函数getClaculationId(){
var appointmentid=parseInt($('#appointmentid').text();
var模型={
appointmentId:appointmentId
}
$.ajax({
url:'@url.Action(“GetCalculationId”,“Calculations”),
contentType:'application/json;charset=utf-8',
数据:JSON.stringify(模型),
键入:“POST”,
数据类型:“json”,
processData:false,
成功:功能(数据){
var列表=数据;
//$(“#calculationId”).text(列表[0].calcId);
GetConsumbles(列表[0].calcId);//在此处调用,并带有成功值
}
});
}
功能(价值){
//var calculationId=$('#calculationId').text();
var模型={
calcId:parseInt(值)
};
$.ajax({
url:'@url.Action(“获取消耗品”、“计算”),
contentType:'application/json;charset=utf-8',
数据:JSON.stringify(模型),
键入:“POST”,
数据类型:“json”,
processData:false,
成功:功能(数据){
var列表=数据;
对于(var i=0;我从getClaculationId()
的success
处理程序函数中调用getconsumposes()
(您可能也想修复函数名中的输入错误)。您甚至可以传递列表[0].calcId
值作为参数。我会将GetConsumbles函数作为getCalculationId函数的参数传递,以便getCalculationId可以在id准备好后调用GetConsumbles。另一个选项是将GetConsumbles包装到一个setInterval中,直到id出现为止。@kimy82不,永远不要使用计时器处理asynchronicity.#fieldId
是隐藏的
,因此我认为更改不会起作用。将其更改为
,无论如何,没有人看到此:-)@仅仅因为它位于隐藏字段中而重新连接并不意味着它不容易读取。此外,使用DOM事件处理程序触发以下操作是一种非常糟糕的方法。如果没有DOM,你会怎么做?@Alnitak关于这一点,你可以问其他人,我只是提出了不同的解决方案(来自评论)根据问题中发布的信息,也许他无法更改为字段设置值的源代码?无论如何,每个解决方案都在某个问题的范围内
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);
};
}
});
}