我的第二个ajax调用总是返回undefined。
var getrpmData = fetchAjaxData(
{
"MachineID": MachineID,
"diaVal": diaVal,
"ggVal": ggVal,
"ITEMID": ITEMID
},
"url_to_call");
getrpmData.then((rpmData) => {
console.log(rpmData.d);//getting desired value from this
if (rpmData.d) {
shifHourUsigRPM(rpmData.d);
}
})
.then((prodRate) => {
console.log(prodRate.d.KnittingQty);//not getting value
})
.fail((err) => {
console.log(err);
}
);
// Generic function to make an AJAX call
var fetchAjaxData = function (dataParam, dataURL) {
// Return the $.ajax promise
return $.ajax({
beforeSend: function () { $.blockUI(); },
complete: function () { $.unblockUI(); },
type: "POST",
url: dataURL,
dataType: "JSON",
contentType: "application/json;charset=utf-8",
data: JSON.stringify(dataParam)
});
}
function shifHourUsigRPM(rpm) {
var KnittingWorkOrderId = GetValue($("#cmbKWO").val(), 'dlKWO');
var ITEMID = $("#cmbFabName").val();
var machineId = GetValue($("#cmbMachineID").val(), 'dlMachineID');
//fetchAjaxData(
// { "this_RPM": rpm, "fab": ITEMID, "machineId": machineId, "KWOID": KnittingWorkOrderId },
// "pageKnittingProductionPlanning_MachineWise.aspx/KPP_Load_QtyByRPM");
return $.ajax({
type: "POST",
beforeSend: function () { $.blockUI(); },
complete: function () { $.unblockUI(); },
url: "pageKnittingProductionPlanning_MachineWise.aspx/KPP_Load_QtyByRPM",
dataType: "JSON",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({ "this_RPM": rpm, "fab": ITEMID, "machineId": machineId, "KWOID": KnittingWorkOrderId }),
success: function (data) {
//var result = data.d;
}
});
我的后端网络服务运行正常,并返回所需的值但未在第二次console.log
调用中获得该值
低于网络响应的响应:
{"d":{"__type":"BLL.Kniting_BLL.KnittingQty","TotalFabNeed":"5 is production rate","RemFabQty":null}}
我希望我的第二个console.log
应该打印
" 5是生产率"
,但在控制台上打印undefined
答案 0 :(得分:1)
您的第一个then
回调未返回值,因此第二个then
回调
将undefined
作为参数。
您应返回 shifHourUsigRPM(rpmData.d)
返回的值(即承诺),因此请在该呼叫之前添加return
。
getrpmData.then((rpmData) => {
if (rpmData.d) {
return shifHourUsigRPM(rpmData.d);
// ^^^^^^
}
})