Question

I have a variable which gets value from a function. The function contains 2 PageMethods. Inside the function everything works perfectly but the variable dsrt holds "Undefined". Someone can tell me why the function does not return any value?

dsrt = calculate_all_rates(ratetypes.Day1_Rate, ddlccy.options[ddlccy.selectedIndex].value, ses, ccytype.ID, ((ddltype.options[ddltype.selectedIndex].text == "Export") ? postyp.Export : postyp.Import), dt, mat2, mat2, ddlpf.options[ddlpf.selectedIndex].value, 0, 0, 0, "", ddlbank.options[ddlbank.selectedIndex].value);

function calculate_all_rates(rateid, ccy1,ccy2,ctyp,typ,posdt,matdt1,matdt2,pfid,mar,mar1,mar2 ,caltyp,bnk ) {
    var rds = new Array();
    var para = new Array();
    para[0] = rateid;
    para[1] = ccy1;
    para[2] = ccy2;
    para[3] = ((ctyp == 1) ? "ID" : "NAME");
    para[4] = ((typ == 1) ? "Export" : "Import");
    para[5] = posdt;
    para[6] = matdt1;
    para[7] = matdt2;
    para[8] = pfid;
    para[9] = mar;
    para[10] = mar1;
    para[11] = mar2;
    para[12] = caltyp;
    para[13] = bnk;
    if(rateid == 9) {
        PageMethods.rates(para,"avgspot",suc1,err1);
        function suc1(res){rds=res;return rds;}
        function err1(){}
    } else {
        PageMethods.rates(para,"calcrates",suc2,err2);
        function suc2(res){rds=res;return rds;}
        function err2(){}
    }
}

dsrt returns the value as "Undefined".

Was it helpful?

Solution

Do the following changes. It works.

You cannot assign the value returned by the pagemethods which is in another function to dsrt. so use dsrt and all the functionality of Calculate_all_rates in the calling function

old Code:

dsrt = calculate_all_rates(ratetypes.Day1_Rate, ddlccy.options[ddlccy.selectedIndex].value, ses, ccytype.ID, ((ddltype.options[ddltype.selectedIndex].text == "Export") ? postyp.Export : postyp.Import), dt, mat2, mat2, ddlpf.options[ddlpf.selectedIndex].value, 0, 0, 0, "", ddlbank.options[ddlbank.selectedIndex].value);

new code:

function Common()
{
 var rateid;var ccy1;var ccy2;var ctyp;var typ;var posdt;var matdt1;var matdt2;var pfid;var mar;
var mar1;var mar2;var caltyp;var bnk;
{rateid=ratetypes.Day1_Rate;ccy1=ddlccy.options[ddlccy.selectedIndex].value;ccy2=ses;ctyp=ccytype.ID;typ=((ddltype.options[ddltype.selectedIndex].text == "Export") ? postyp.Export : postyp.Import);posdt=dt;matdt1=mat2;matdt2=mat2;pfid=ddlpf.options[ddlpf.selectedIndex].value;mar=0;mar1=0;mar2=0;caltyp="";caltyp=bnk=ddlbank.options[ddlbank.selectedIndex].value;}

var str;
var para_arr = new Array();
para_arr[0] = rateid;
para_arr[1] = ccy1;
para_arr[2] = ccy2;
para_arr[3] = ((ctyp == 1) ? "ID" : "NAME");
para_arr[4] = ((typ == 1) ? "Export" : "Import");
para_arr[5] = posdt;
para_arr[6] = matdt1;
para_arr[7] = matdt2;
para_arr[8] = pfid;
para_arr[9] = mar;
para_arr[10] = mar1;
para_arr[11] = mar2;
para_arr[12] = caltyp;
para_arr[13] = bnk;
if(rateid == 9)
{
    str="avgspot";
}
else
{
    str="calcrates";
}
PageMethods.rates(para_arr,str,calc_suc,calc_err);
function calc_suc(resp)
{
  dsrt=resp;
}
function calc_err(){}
}

OTHER TIPS

try putting return in front of function i.e,

return  function suc1(res){rds=res;return rds;}

you have any return for your main function

try

var rds;
function suc1(res){rds=res;}
return rds;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top