2017-11-12 11 views
1

私の2番目のajax呼び出しは常に未定義です。Jquery ajax約束が返されていません

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; 
     } 
    }); 

は私のバックエンドのWebサービスが正常に動作し、そして所望の値を返すが、ネットワークの応答からの応答の下になって二console.logコール

にその値を取得していない:私は

{"d":{"__type":"BLL.Kniting_BLL.KnittingQty","TotalFabNeed":"5 is production rate","RemFabQty":null}} 

私の二番目を期待する

"5は生産率"

が、undefinedは、コンソール

+0

最初の 'then'コールバックは値を返していません。 2番目の 'then'コールバック引数の値として期待するものは、最初の' then'コールバックで返すものになります。あなたがそこに何かを返さないので、あなたは2番目に何も得られません。 – trincot

+0

私の最初の呼び出しは** shifHourUsigRPM(rpmData.d); **別の約束を返すべきです – autopilot

+0

したがって、shiftHourUsigRPM(rpmData.d)の呼び出しの前に 'return'を追加してください。さもなければ返された約束はどこにも行きません。 – trincot

答えて

1

あなたの最初のthenコールバックが値を返していないので、二thenコールバック が引数としてundefinedを取得するに印刷ばかり。

返信shifHourUsigRPM(rpmData.d)という値(つまり約束)が返されるため、その呼び出しの前にreturnを追加してください。

 getrpmData.then((rpmData) => { 
      if (rpmData.d) { 
       return shifHourUsigRPM(rpmData.d); 
     //  ^^^^^^ 
      } 
     })