1

I am trying to assign the entire data that i get from backend which is stored in the response object to a javascript variable and lastly the main function $scope.SelectedTerms should return the variable.but what i get is the variable data to which i am storing the response is undefinied I am working on anjularjs

$scope.SelectedTerms = function (feeHeadId,feeHead){
    var data="";
    var datatosend="";
    var formData = {
            customerId : $scope.customerId,
            feeHeadId : feeHeadId,
            selectedOptions : feeHead.feeHeadSelectedOption.display.split("+"),
            payterms : feeHead.pmntTerms
    }

        $http({

        url : '<%= fileReader.getValue("ICOLLECT_SERVICE") %>?<%=ICollectConstants.FLOW_NAME_PARAM%>=<%= ICollectConstants.FLOW_NAME %>&<%=ICollectConstants.MERC_ID%>=<%= icMerchantMasterBean.getIcMerchantMasterId() %>&<%= ICollectConstants.BANK_ID%>=<%= icMerchantMasterBean.getIcBankMasterId()%>&req_id=validateFeeAndSendResponse&checksum=BFEDE97EF99CCF9C1362EBFE7C94E3233ED6E2B7637AC7BDB34AC916D9BAC3AD&reqtoken=<%=req_token%>'+'&method=TEST' ,
        method : "POST",
        params : {
            jsondataforST:btoa(angular.toJson(formData)),
            responseType:"1",
            backUrl :'<%= backUrl%>',
            icMerchantMasterId : <%= icMerchantMasterBean.getIcMerchantMasterId()%>,
            icMerchantBankId : <%= icMerchantMasterBean.getIcBankMasterId()%>
            }
    }).then(function Success(response){
        if(response.data.statusCode=="100"){
            data = response.data;
            //datatosend;
                /*function funccarringSubfee(){
                var value = data[feeHeadId];
                console.log("value inside subFunction");
                console.log(value);
                return value;

            }*/
            //$scope.separateTermLogic(feeHead,data);
        }
    }, function error(response){
        console.log("error occured");
    });

    return data;    //it returns undefinied

};
  • Not sure if there is an angular specific solution, but you should read [How do I return the response from an asynchronous call?](https://stackoverflow.com/q/14220321/218196) – Felix Kling Nov 19 '19 at 09:27
  • Which angular? What do you use to store your data (RxJS?)? – przemo_li Nov 19 '19 at 09:27

1 Answers1

0

hey Guys these worked for me...Thankyou for your Response...I just injected $d

   $scope.SelectedTerms = function (feeHeadId,feeHead){
    console.log(" async SelectedTerm function Started");
    var data="";
    var datatosend="";
    var formData = {
            customerId : $scope.customerId,
            feeHeadId : feeHeadId,
            selectedOptions : feeHead.feeHeadSelectedOption.display.split("+"),
            payterms : feeHead.pmntTerms
    }
    var deferred = $q.defer();//newely added
        $http({

        url : '<%= fileReader.getValue("ICOLLECT_SERVICE") %>?<%=ICollectConstants.FLOW_NAME_PARAM%>=<%= ICollectConstants.FLOW_NAME %>&<%=ICollectConstants.MERC_ID%>=<%= icMerchantMasterBean.getIcMerchantMasterId() %>&<%= ICollectConstants.BANK_ID%>=<%= icMerchantMasterBean.getIcBankMasterId()%>&req_id=validateFeeAndSendResponse&checksum=BFEDE97EF99CCF9C1362EBFE7C94E3233ED6E2B7637AC7BDB34AC916D9BAC3AD&reqtoken=<%=req_token%>'+'&method=TEST' ,
        method : "POST",
        params : {
            jsondataforST:btoa(angular.toJson(formData)),
            responseType:"1",
            backUrl :'<%= backUrl%>',
            icMerchantMasterId : <%= icMerchantMasterBean.getIcMerchantMasterId()%>,
            icMerchantBankId : <%= icMerchantMasterBean.getIcBankMasterId()%>
            }
    }).then(function Success(response){
        if(response.data.statusCode=="100"){
            data = response.data;
            console.log("async SelectedTerms:"+feeHeadId+":"+feeHead+":"+data);
            feesforUniquekey = processSelectedTermsResponse(feeHeadId,feeHead,data);
            deferred.resolve(feesforUniquekey);// These Resolve() sends the data .
        }
    }, function error(response){
        console.log("async error occured");
        deferred.reject({ message: "Really bad" });
    });

    //return data;  
    console.log(" async Selected term function End");
    return deferred.promise;
};