Search code examples
javascriptfunctionvariablespagemethods

variable doesnot hold the function


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".


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(){}
    }